gpt4 book ai didi

ios - 自定义 UITextField 类仅适用于第一个文本字段

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

我在 Swift 中创建了我的第一个自定义类,我想将它用于我应用程序中的文本字段。问题是它只适用于 View Controller 中的第一个文本字段,该类不适用于第二个(第二个没有圆角,默认占位符颜色等)。我仔细检查了两个文本字段的 Storyboard 中是否设置了正确的“自定义类”。为什么该类不应用于这两个领域?似乎有一个简单的解决方案,但我还没有找到任何...

这是类:

import UIKit


class RoundedUITextField: UITextField {

override init(frame: CGRect) {
super.init(frame: frame)

self.setAttributes()
}



required init?(coder aDecoder: NSCoder) {

super.init(coder: aDecoder)

}

func setAttributes() {
self.layer.cornerRadius = 20.0
let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 15, height: self.frame.height))
self.leftView = paddingView
self.leftViewMode = UITextFieldViewMode.always
self.textColor = UIColor.white
self.alpha = 0.7
let str = NSAttributedString(string: (self.placeholder)!, attributes: [NSForegroundColorAttributeName:UIColor.white])
self.attributedPlaceholder = str



}

}

这是 View Controller 代码:

class LogInViewController: UIViewController {

@IBOutlet weak var password: RoundedUITextField!
@IBOutlet weak var userName: RoundedUITextField!


override func viewDidLoad() {

super.viewDidLoad()

userName.setAttributes()



// Do any additional setup after loading the view.
}

我现在发现问题出在“setAttributes”上,我认为属性是在类中设置的,但实际上它们只在 viewDidLoad 中为其中一个设置了(我一开始就把它放在那里,忘了删除它)...我希望在所有字段的类的“初始化”中完成...

最佳答案

将您的 self.setAttributes() 放入您的 awakeFromNib 方法中,并将其从 init(frame: CGRect) 中移除

override func awakeFromNib() {
super.awakeFromNib()
self.setAttributes()
}

你的自定义类代码会是这样的

import UIKit


class RoundedUITextField: UITextField {

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



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

override func awakeFromNib() {
super.awakeFromNib()
self.setAttributes()
}

func setAttributes() {
self.layer.cornerRadius = 20.0
let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 15, height: self.frame.height))
self.leftView = paddingView
self.leftViewMode = UITextFieldViewMode.always
self.textColor = UIColor.white
self.alpha = 0.7
let str = NSAttributedString(string: (self.placeholder)!, attributes: [NSForegroundColorAttributeName:UIColor.white])
self.attributedPlaceholder = str



}

}

希望对你有帮助

关于ios - 自定义 UITextField 类仅适用于第一个文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45658992/

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