2016-08-03 6 views
0

何らかの理由で、私のUIWindowrootViewControllerのマージンが左右に16、上下に0に設定されています。残念ながら、私は手作業ですべてを初期化するレガシー(読み込み:非ストーリーボード)アプリケーションで作業しています。これは、出力ルートビューコントローラのマージンが奇数に設定されている

次私は - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

コード

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
self.window.rootViewController = [[UIViewController alloc] init]; 
[self.window makeKeyAndVisible]; 

UIEdgeInsets insets = self.window.layoutMargins; 
NSLog(@"Left %f, Right %f, Bottom %f, Top %f", insets.left, insets.right, insets.bottom, insets.top); 
insets = self.window.rootViewController.view.layoutMargins; 
NSLog(@"Left %f, Right %f, Bottom %f, Top %f", insets.left, insets.right, insets.bottom, insets.top); 

製造する際に、このコードを持っている0

の下の余白を持つことを主張多くの層の深いView Controllerを、影響します

2016-08-03 18:10:24.280 app[426:182429] Left 8.000000, Right 8.000000, Bottom 8.000000, Top 8.000000 
2016-08-03 18:10:24.280 app[426:182429] Left 16.000000, Right 16.000000, Bottom 0.000000, Top 0.000000 

最終的にこれが期待される動作であることがわかりました。新しいUIViewControllerをプッシュすると、下の余白が追加されないことに驚いています。これは予想される動作ですか? iOSでボトムマージンを期待することはできませんか?

答えて

0

説明している余白は、「ガイド」以外のものではありません。 レイアウト制約の一部として使用しない限り、ビューのレイアウトには影響しません。フレーム/境界を使用することを決めた場合、レイアウトにはまったく影響しません。

+0

私はビューをレイアウトする際にlayoutMarginsを使用していましたが、ボタンがビューの一番下に配置されていて、外側から設定されているのが奇妙でした。私はこれが期待されていると思いますが、あなたがストーリーボードとXIBを使ってビルドしているならば、インセットされているボトム&トップのレイアウトガイドを使うことを提案します。レガシーが起こっているようです。 – JustinHK

+0

AutoLayoutとFrame/Boundsを使用することの違いをはっきりと理解してください。マージンガイドラインに対するあなたの期待は、システムごとに異なります。 – bsarrazin

+0

私はautolayoutをたった今使っていましたが、iOSで単一ページのアプリケーションを作成し、上端、下端、および両側の余白に唯一のサブビューを固定すると、エッジには触れませんが触れません画面の上部と下部。 – JustinHK

関連する問題