Ios 在何处设置UIView子类';子视图?
我有一个简单的Ios 在何处设置UIView子类';子视图?,ios,uiview,initialization,uilabel,drawrect,Ios,Uiview,Initialization,Uilabel,Drawrect,我有一个简单的UIView子类,在其中放置UILabel,以便从UIViewController为此类UIView标签提供特定的框架、背景色和文本格式 我正在看报纸,但有些事情我还没有完全理解。。。当您的视图只有系统标准子视图时,例如myUILabel,我是否应该覆盖drawRect:方法?或者,这只适用于核心动画员工?如果我不应该在这种方法中设置标准子视图,那么正确的位置是什么?然后我是否应该重写init方法 提前感谢否,您不应该覆盖drawRect来初始化子视图,因为它会影响性能。这应该在i
UIView
子类,在其中放置UILabel
,以便从UIViewController
为此类UIView
标签提供特定的框架、背景色和文本格式
我正在看报纸,但有些事情我还没有完全理解。。。当您的视图只有系统标准子视图时,例如myUILabel
,我是否应该覆盖drawRect:
方法?或者,这只适用于核心动画
员工?如果我不应该在这种方法中设置标准子视图,那么正确的位置是什么?然后我是否应该重写init
方法
提前感谢否,您不应该覆盖drawRect来初始化子视图,因为它会影响性能。这应该在init、initWithFrame或initWithCoder方法中完成。例如,这就是如何使用initWithFrame方法实现的
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
//initialize sub views
}
return self;
请注意,
UIView
的init
实现只是使用CGRectZero
调用initWithFrame
。因此,如果使用NSCoding,您应该始终覆盖initWithFrame
(或initWithCoder
)。谢谢。我遇到了另一个问题:通过覆盖layoutSubviews
方法来设置子视图怎么样?这会比在初始化方法中设置它们更合适吗?您应该覆盖layoutSubviews
,以便为您的子视图执行任何自定义布局逻辑,例如更新它们的框架。由于它可以在UIView
s生命周期内多次调用,因此不适合初始化子视图本身。这应该在初始化器中完成。@Hamish如果要初始化某些子视图,您需要具有视图的实际框架,该怎么办?