如何重写initWithFrame:和initWithCoder:在UIView的子类?
我想要inheritanceUIView。 我已经有了一些指定的初始值设定项,我希望我的自定义视图可以从代码或从Nib文件初始化。 所以,苹果告诉我们要使用指定的初始值设定项,但是他们不是自己做的 – initWithCoder:
不会调用initWithFrame:
在两种情况下我应该怎样做才能让我的指定初始化器被调用? 有没有办法做到这一点?
用一种方法打包您的特殊初始化。 它可以是私有的(在.m中声明)。 然后重写这两个初始化器,并从它们中调用你的init方法。
- (void)myInitialization { //do your stuff } - (id)initWithFrame:(CGRect)aRect { self = [super initWithFrame:aRect]; if (self) { [self myInitialization]; } return self; } - (id)initWithCoder:(NSCoder*)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { [self myInitialization]; } return self; }
如你所说:
initWithFrame: – build议你实现这个方法。 除了此方法之外,您也可以实现自定义初始化方法。
initWithCoder: – 如果从Interface Builder nib文件加载视图并且视图需要自定义初始化,则实现此方法。
我会做的只是一个方法,都会调用,这将有你想在你的UIView
实现的常见行为。