1

iPhone の NavigationController では、高さが 460 であることに気付きました。したがって、ステータス バーを除く画面全体が含まれます。

ただし、座標 0 に何かを追加すると、NavigationBar の後に表示されますが、ナビゲーション バーのサイズは高さに含まれます (つまり、このビューのフレーム全体が画面からはみ出します)。

私は間違いを犯しましたか?そうでない場合、なぜこのように構成されているのですか?

NSLog(@"Frame: %@", [NSValue valueWithCGRect: self.view.frame]); // prints {(0, 20), (320, 460)}
UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame: CGRectMake(0, self.navigationController.navigationBar.frame.size.height, self.view.frame.width, 50)];
[self.view addSubview: scrollView]; // showing up 44px *after* the nav bar
4

1 に答える 1

0

私はすでに他の同様の質問に答えましたが、これがこれに対するものです。

ではviewDidLoad、ビューの高さが 460 と表示されます。これは、その時点ではナビゲーション バーを考慮してサイズが変更されていないためです。

しかし、同じフレームを印刷するとviewWillAppear、フレームの高さがナビゲーション バーに合わせて調整されていることがわかります。

したがって、 に何かを追加する場合viewDidLoadは、ビュー フレームに基づいて追加し、必要なジョブを実行するサイズ変更マスクを追加して、ビューが表示されたら正しく調整されることを確認する必要があります。

于 2013-06-12T05:41:33.247 に答える