我想通过继承UIImageView
类来创建自定义类RoundedImageView。
为了实现它,我使用以下代码:
self.layer.cornerRadius = self.frame.size.width/2;
self.layer.masksToBounds = YES;
我应该在哪里放置此代码?在初始化程序中?或者也许在layoutSubviews
?我知道在初始化程序中访问self的属性并不是一个好主意(因为self可能没有完全初始化),这就是为什么我感到困惑并且我不确定在何处放置此代码。< / p>
答案 0 :(得分:1)
初始化方法绝对是正确的位置,因为您只想将这些属性设置一次。
关于与访问属性相关的问题,我们的想法是可以在派生类中重写属性访问器,从而访问尚未正确初始化的对象部分。我想说,除非你打算以一些不太明智的方式覆盖layer
的吸气剂,否则这不是你的情况下的一个大问题。
答案 1 :(得分:1)
UIView(或从UIView派生的任何类)的规范初始化看起来像这样
- (void)setup
{
// do any initialization here
}
- (void)awakeFromNib
{
[self setup];
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
[self setup];
return self;
}
这适用于由故事板创建的视图和以编程方式创建的视图。资料来源:the CS193P videos。