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 に答える