Ste*_*her 2 iphone cocoa-touch uiview
为UIView子类的属性设置默认值的正确方法是什么?
虽然我还没有使用它们,但如果XIB提供了一个值,我希望它覆盖默认值.但是如果XIB没有提供值,我会喜欢我的默认值.
在这种情况下,我正在考虑具体的CGFloat值.虽然它可以设置为0.0,但这不是一个有用的默认值,因此在我的代码中检查值为0.0并将其替换为更好的值是我宁愿避免的.
在您的子类中实现initWithFrame:并在那里设置属性.
- (id)initWithFrame:(CGRect)aRect {
if (self = [super initWithFrame:aRect]) {
// Set whatever properties you want. For example...
self.alpha = 0.75;
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
只有在代码中构造视图时,才会执行此指定的初始值设定项.如果视图来自nib文件,它将使用initWithCoder:初始化,它修改属性以匹配nib文件中的属性.要处理这种情况,您可以覆盖initWithCoder:,test以查看属性是否设置为其默认值,如果是,请更改它:
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super initWithCoder:decoder]) {
if (self.alpha == 1.0) {
self.alpha = 0.20;
}
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1431 次 |
| 最近记录: |