我正在尝试确定为 UIView 自定义初始化程序的最佳方法,以便可以将一个值传递给初始化程序,并立即将其作为 iVar 存储在 UIView 子类中,因为在drawRect
.
目前我正在使用默认值,创建此 UIView 的类在调用initWithFrame
后将其 iVar 设置为一个值,它实际上正在工作;不知何故,即使在 UIView 初始化后设置了这个 iVar 的值。initWithFrame
drawRect
所以我需要两件事之一:
1)有信心知道这一点是可以的:我可以依靠drawRect
某种方式延迟绘图,以便在 UIView 初始化后由另一个对象设置 iVar。在这种情况下,只是在 UIView 初始化时才drawRect
被调用?
或者,
2)我需要在初始化期间传递值:这是创建自定义初始化程序的最佳方式(CGRect)frame
吗initWithFrame.
?
myNewView=[[MyCustomView alloc] initWithFrame:myRect andMore:myValue];
然后在 MyCustomView.m 中:
- (id)initWithFrame:(CGRect)frame andMore:(int)someValue
{
self = [super initWithFrame:frame];
if (self) {
myIvar=someValue;
... //continue as normal
}
}
这段代码会是一个好方法吗?然后我会很舒服地知道该值在drawRect
被调用之前就在那里。