IBOutlet UIView从Nib文件加载

时间:2010-12-17 11:04:46

标签: iphone objective-c cocoa

我从带有插座的NIB文件加载UIView,我想更改这些插座的属性。我想知道我什么时候应该这样做,因为在init方法中,出口是零并且有意义,而在drawRect方法中我可以改变我的出口的属性但是我不确定它是否正确要做到这一点。 是否有一个在init方法和drawRect方法之后调用的方法,我可以做我想做的事情?

谢谢。

3 个答案:

答案 0 :(得分:3)

有layoutSubviews - 在第一次调用drawRect之前肯定会调用它吗?

答案 1 :(得分:3)

在加载nib并调用UIViewController之后调用viewDidLoad方法loadView。 (loadView允许您以编程方式加载视图而不是使用nib。但是,nib更好,因此最好假装loadView不存在。)

NSObject实施awakeFromNib。从nib加载对象后调用awakeFromNib。以下是文档的引用:

  

通常,您需要为需要在设计时无法完成的其他设置的对象实现awakeFromNib。例如,您可以使用此方法自定义任何控件的默认配置,以匹配用户首选项或其他控件中的值。您也可以使用它将单个控件恢复到应用程序的某个先前状态。

drawRect:UIView方法,只有在需要进行Quartz绘图时才使用它。使用图层和核心动画效率更高。如果您要配置自定义UIView(即您已经将UIView子类化,而不是在UIViewController内配置视图),那么您应该使用initWithCoder:

答案 2 :(得分:0)

如果要在UIView的初始化代码中使用IBOutlets - 覆盖awakeFromNib。这是在配置出口后调用的第一个方法。

关于UIViewController - viewDidLoad和viewDidAppear通常是放置初始化代码的方便位置但要注意:autolayout在这个阶段没有发生,这意味着奇怪的自动调整效果会让你烦恼。更好的解决方案是将您的代码放在viewDidLayoutSubviews中,这是自动布局后调用的第一个生命周期方法。