根视图控制器边距设置为奇数值

时间:2016-08-03 22:13:37

标签: ios uiviewcontroller autolayout uiwindow rootview

出于某种原因,我的UIWindow rootViewController左边和右边的边距设置为16,顶部和底部的边距设置为0。不幸的是,我正在使用遗留(读取:非故事板)应用程序来手动初始化所​​有内容。这会影响多个深层的视图控制器,它们的底部边距为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);

制作以下输出

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中有一个底线?

1 个答案:

答案 0 :(得分:0)

您所描述的边距只不过是“指南”。 它们不会影响视图的布局,除非您将它们用作布局约束的一部分。如果您决定使用框架/边界,它们根本不会影响布局。