iOS 8.1上的自动布局已中断

时间:2017-01-27 10:47:13

标签: ios objective-c ios-autolayout ios8.1 visual-format-language

我正在使用Auto Layout Visual Format Language并使用以下表达式:

  • H:| [_tableView] |
  • H:| [_actionButton] |
  • N:| [_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);>

我正在使用测试代码:

提前致谢

1 个答案:

答案 0 :(得分: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;
}

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