iphone - awakeFromNib 中的代码被 Storyboard覆盖

标签 iphone ios ipad viewdidload awakefromnib

我有以下代码:

- (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/

相关文章:

objective-c - CALayer addSublayer 增加保留计数?

ios - 在 Xcode 7.2 中哪里可以找到应用程序加载器

iphone - NSURL 总是返回 Nil

iphone - 无法通过在 ipad 中使用 OpenGL 获得裁剪图像的确切部分

ios - 我们可以检测哪个 ios 应用程序正在使用我的自定义键盘吗

Javascript 方向更改不适用于 iPad 上的 PhoneGap

ios - 替代 Apple Lion 服务器配置文件管理器

iphone - 不重新加载 ImageView

ios - UISplitViewController 像邮件应用

ios - 获取联系人在 iphone 视网膜 4 英寸 64 位模拟器中不起作用,但在 3.5 英寸中工作正常