【发布时间】:2014-08-28 15:54:24
【问题描述】:
我计划子类化 UITextField,这样我就可以在全局范围内自定义我的应用中文本字段的外观。根据我们模型中的设计,文本字段应该有一个绿色边框,我已经为我的一个文本字段做了。 (来源:https://stackoverflow.com/a/5749376/334545)
我还更改了占位符颜色,如下所述:https://stackoverflow.com/a/19852763/334545
但所有这些都只针对一个文本字段。我希望我所有的其他文本字段都有这个,所以我尝试通过创建一个我尝试使用的新 uitextfield 类来进行子类化。我在MYUITextField.m的initWithFrame方法中添加了上面的方法:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
UIColor *greenColor = [UIColor colorWithRed:122.0/255.0 green:168.0/255.0 blue:73.0/255.0 alpha:1.0];
UIColor *greyColor = [UIColor colorWithRed:87.0/255.0 green:87.0/255.0 blue:87.0/255.0 alpha:1.0];
self.layer.borderColor=[greenColor CGColor];
self.layer.borderWidth= 1.0f;
self.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"" attributes:@{NSForegroundColorAttributeName: greyColor}];
}
return self;
}
我应该只更改 drawRect 方法吗?应用会因此变慢吗?
【问题讨论】:
-
您是否担心覆盖 drawrect 对速度的影响?那么不太可能。但一般来说,覆盖 drawRect 是 Cocoa 控件的最后手段。我建议在更改绘图机制之前修改属性。
标签: ios cocoa-touch ios7 uitextfield