我有以下代码:
- (void) awakeFromNib
{
CGRect temp = self.buttonOne.frame;
temp.origin.y += 50;
self.buttonOne.frame = temp;
}
里面的代码什么都不做;当应用加载 buttonOne 时,它就在 Storyboard上。
如果我将相同的代码放入 viewDidLoad 中:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
CGRect temp = self.buttonOne.frame;
temp.origin.y += 50;
self.buttonOne.frame = temp;
}
它起作用了,按钮被下移了。
这是因为在 awakeFromNib 触发和绘制 View 之间发生了什么事吗?
任何澄清都会很棒!
最佳答案
awakeFromNib
将在 Controller 从 nib 文件中取消存档时调用,而 viewDidLoad
将在创建绑定(bind)到 Controller 的 View 时调用。
因此awakeFromNib
会在viewDidLoad
之前被调用。当调用 awakeFromNib 时, View 还没有被加载(如果它有 viewDidLoad
就会被调用),因此对它的任何更改都不会影响它。
关于iphone - awakeFromNib 中的代码被 Storyboard覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15099221/