自动布局在 iOS 8.1 上损坏
Auto Layout broken on iOS 8.1
我正在使用自动布局视觉格式语言并使用以下表达式:
- H:|[_tableView]|
- H:|[_actionButton]|
- V:|[_tableView][_actionButton(==buttonHeight)]|
它们在 9 和 10 中工作正常,但在 iOS 8.1 中我们注意到布局没有按预期工作。
视图正在获得两倍的尺寸。
- 为iOS10
<UIWindow: frame = (0 0; 320 568);>
<UIView: frame = (0 0; 320 568);
为iOS8.1
<UIWindow: frame = (0 0; 320 568);>
<UIView: frame = (0 0; 640 1136);>
我使用的测试代码:
- ViewController - http://pastebin.com/PjQpKJBD
- AppDelegate.m - http://pastebin.com/4iri9Yp5
提前致谢
这个错误似乎是在您的应用委托中引起的,原因是初始化 window 并在它具有框架之前调用 makeKeyAndVisible
。替换此行:
self.window = [UIWindow new];
在初始化时有明确的框架:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
...然后删除设置 window 框架的冗余行。
或者,您可以在设置 window 的框架后将调用移至 makeKeyAndVisible
,即:
if (initViewController)
{
self.window = [UIWindow new];
self.window.rootViewController = initViewController;
self.window.frame = [[UIScreen mainScreen] bounds];
[self.window makeKeyAndVisible];
return YES;
}
任何一种方法都应该有效。
我正在使用自动布局视觉格式语言并使用以下表达式:
- H:|[_tableView]|
- H:|[_actionButton]|
- V:|[_tableView][_actionButton(==buttonHeight)]|
它们在 9 和 10 中工作正常,但在 iOS 8.1 中我们注意到布局没有按预期工作。 视图正在获得两倍的尺寸。
- 为iOS10
<UIWindow: frame = (0 0; 320 568);>
<UIView: frame = (0 0; 320 568);
为iOS8.1
<UIWindow: frame = (0 0; 320 568);>
<UIView: frame = (0 0; 640 1136);>
我使用的测试代码:
- ViewController - http://pastebin.com/PjQpKJBD
- AppDelegate.m - http://pastebin.com/4iri9Yp5
提前致谢
这个错误似乎是在您的应用委托中引起的,原因是初始化 window 并在它具有框架之前调用 makeKeyAndVisible
。替换此行:
self.window = [UIWindow new];
在初始化时有明确的框架:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
...然后删除设置 window 框架的冗余行。
或者,您可以在设置 window 的框架后将调用移至 makeKeyAndVisible
,即:
if (initViewController)
{
self.window = [UIWindow new];
self.window.rootViewController = initViewController;
self.window.frame = [[UIScreen mainScreen] bounds];
[self.window makeKeyAndVisible];
return YES;
}
任何一种方法都应该有效。