1

我有以下代码:

- (void) awakeFromNib
{
    CGRect temp = self.buttonOne.frame;
    temp.origin.y += 50;
    self.buttonOne.frame = temp;
}

里面的代码什么都不做;当应用程序加载时 buttonOne 正是它在故事板上的位置。

如果我在 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 触发和正在绘制的视图之间发生了一些事情吗?

任何澄清都会很棒!

4

1 回答 1

1

awakeFromNib当控制器从 nib 文件中取消归档时viewDidLoad将被调用,而当与控制器绑定的视图被创建时将被调用。

因此awakeFromNib会在之前调用viewDidLoad。当调用 awakeFromNib 时,视图还没有被加载(如果它已经viewDidLoad被调用的话),因此对它的任何更改都不会影响它。

于 2013-02-26T21:17:36.130 回答