gpt4 book ai didi

ios - swift3 中的 UITextfield 子类中的帧大小不正确

转载 作者:行者123 更新时间:2023-11-28 11:01:43 25 4
gpt4 key购买 nike

将 Xcode 版本升级到 8,我发现了很多问题,我仍在将几乎我的 swift2.3 版本修复到 swift3。我的问题之一是所有自定义 UITextfield 根本不起作用,因为在我的项目中显示空白。以下是我的自定义 UITextfield 以及如何修复以在 swift3 中正确显示。

enter image description here

import UIKit

class OvalTextField: UITextField, UITextFieldDelegate {

required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
createBorder()
}

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let finalString = textField.text! + string;
if (finalString != "") {
textField.rightView?.isHidden = true
}
return true
}

required override init(frame: CGRect) {
super.init(frame: frame)
createBorder()
}

func createBorder(){

let errorImg = UIImageView (frame: CGRect(x: 0, y: 0, width: 30, height: 30))
errorImg.image = UIImage(named: "error")
errorImg.contentMode = UIViewContentMode.left

self.delegate = self
self.layer.borderWidth = 1.0
self.layer.borderColor = UIColor(red:0.93, green:0.93, blue:0.93, alpha:1.0).cgColor
self.layer.cornerRadius = self.frame.size.height / 2
self.layer.masksToBounds = true

let gapLabel = UIView (frame: CGRect(x: 60, y: 0, width: 20, height: 40))
self.leftView = gapLabel
self.leftViewMode = UITextFieldViewMode.always

/* Display that one when validation is failed */
self.rightView = errorImg;
self.rightViewMode = UITextFieldViewMode.always
}
}

最佳答案

TextField 正在从 Storyboard 中获取它的框架,因此您在设置 cornerRadius 时得到的框架大小不正确。

您在设置圆角半径时出错。

 self.layer.cornerRadius = self.frame.size.height / 2

将其替换为

self.layer.cornerRadius = 2

或者如果您重写 drawRect 方法并将 cornerRadius 设置为

override func draw(_ rect: CGRect) {

self.layer.cornerRadius = rect.size.height / 2

}

关于ios - swift3 中的 UITextfield 子类中的帧大小不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40330758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com