2017-08-13 60 views
1

我已经在Swift中创建了我的第一个自定义类,并且我想将其用于我的应用中的文本字段。问题是,它只适用于视图控制器中的第一个文本框,该类不适用于第二个(第二个没有圆角,默认占位符颜色等)。我已经仔细检查了在这两个文本字段的故事板中设置了正确的“自定义类”。为什么这个班级不适用于这两个领域?好像有一个简单的解决方案一的事情,但我还没有发现任何...自定义UITextField类只应用于第一个文本字段

这里是类:

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 



    } 

} 

下面是这个视图控制器代码:

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中为其中一个设置(我把它放在开头并忘记删除它)...我想要在所有字段的类的“初始化”中完成...

+0

发表您IBOutlets定义码 –

回答

1

把你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 



    } 

} 

希望这有助于

相关问题