2

我正在使用自动布局视觉格式语言并使用以下表达式:

  • H:|[_tableView]|
  • H:|[_actionButton]|
  • V:|[_tableView][_actionButton(==buttonHeight)]|

它们在 9 和 10 中运行良好,但在 iOS 8.1 中,我们注意到布局没有按预期工作。该视图正在获得两倍的尺寸。

  • 对于 iOS 10
  • <UIWindow: frame = (0 0; 320 568);>
  • <UIView: frame = (0 0; 320 568);

  • 对于 iOS 8.1

  • <UIWindow: frame = (0 0; 320 568);>
  • <UIView: frame = (0 0; 640 1136);>

我使用的测试代码:

提前致谢

4

1 回答 1

0

这个错误似乎是在您的应用程序委托中引起的,通过初始化窗口并makeKeyAndVisible在它有框架之前调用。替换这一行:

self.window = [UIWindow new];

在初始化时有一个明确的框架:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

...然后删除设置窗口框架的冗余线。或者,您可以将调用移至makeKeyAndVisible设置窗口框架之后,即:

if (initViewController)
{
    self.window = [UIWindow new];
    self.window.rootViewController = initViewController;
    self.window.frame = [[UIScreen mainScreen] bounds];
    [self.window makeKeyAndVisible];

    return YES;
}

无论哪种方式都应该有效。

于 2017-01-28T13:15:51.800 回答