我有一个输入有白色背景和红色背景的形式的标志。而不是手动更改每个UITextField
有背景的背景,我可以扩展UITextField
并添加一些额外的功能,或者是否有更好方式?ios UITextField扩展名(子类)
另外,如果我做一个自定义UITextField
,有没有办法使用Interface Builder
?
我有一个输入有白色背景和红色背景的形式的标志。而不是手动更改每个UITextField
有背景的背景,我可以扩展UITextField
并添加一些额外的功能,或者是否有更好方式?ios UITextField扩展名(子类)
另外,如果我做一个自定义UITextField
,有没有办法使用Interface Builder
?
创建一个实现您的功能的UITextField子类。然后在Interface Builder中,只要将UITextField拖放到您的视图上,请将其Inspector中的类设置为您的UITextField子类。
您仍然可以像在普通UITextField中一样在IB中配置它,它在IB中看起来不会有任何不同,但是当您的应用程序运行时,它将具有您自定义的背景颜色。请记住,如果您要在Interface Builder中使用文本字段的子类,则需要实现initWithCoder或awakeFromNib方法而不是initWithFrame方法,否则当创建自定义设置代码时,它将不会运行笔尖。
此外,您将无法在IB中设置您的子类的任何自定义属性,因此如果您需要红色文本字段和蓝色文本字段,则需要创建两个独立的子类他们在IB中,而不需要在代码中设置它们的属性。
更新:您不能在IB中设置自定义属性。您现在可以使用检查器中的用户定义的运行时属性面板。
使用用户定义的运行时属性,您可以设置一些没有代码的属性,前提是您的目标是iOS 5等。另外,请务必查看NSFormatter进行实际验证。 –
@NickLockwood当继承类似'UITextField'的东西时,初始化函数run(又名构造函数)是什么? – Jacksonkr
正如我所说,如果使用Interface Builder创建它,它就是initWithCoder,但是可以使用awakeFromNib来代替,这可能会更容易一些。在init方法之后调用awakeFromNib。 –