境界とフレームに関するいくつかの投稿をチェックしていますが、まだ少し混乱しています。
次の階層があります: UITabBarController > UINavigationController > UIViewController
次のNSLogを試したところ
NSLog(@"%f %f %f",[[[self tabBarController] view] bounds].size.height, [[[self navigationController] view] bounds].size.height, [[self view] bounds].size.height);
次の出力が得られます。
480.000000 431.000000 460.000000
ステータス バーの高さの 20 の違いは理解できますが、UIViewController の境界がステータス バーの高さを除外する理由はわかりませんが、UINavigationController と UITabBarController には含まれています...
質問を絞り込む
1) 上部の tabBarController の高さが 480.0 であるのはなぜですか (ステータス バーの高さ 20pt を除外しないのはなぜですか???)。わかりました、高さは常にステータスバーの高さを除外しないと仮定して、今のところ先に進みます
2) UINavigationController の高さは 431.0 です (妥当な推測では、480 ~ 49 です。49 はタブ バーの高さです)。しかし、ステータスバーの高さではなく、タブバーの高さを選択的に除外するのはなぜですか? Apple の View Programming Guide はそれを説明していないようです...しかし、先に進みましょう...
3) UIViewController の高さが 460 なのはなぜですか?!
(3a) UITabBarController や UINavigationController とは異なり、ステータス バーの 20pt の高さを除外するのはなぜですか?
(3b) さらに重要なのは、なぜナビゲーション バーの高さを除外しないのか (つまり、なぜ 431-44 = 387 であってはならないのか?!)
(3c) UINavigationControllerの内側にあるUIViewControllerの高さが UINavigationController よりも長いのはなぜですか?