我在带有自动布局的ios模拟器7.1上有一个非常奇怪的问题但在ios 8上一切正常。
在ios模拟器7.1上新建"查看控制器"通过segue呈现它的内容变得布局不正确,有时甚至移动。
github上的演示代码: https://github.com/Misterio26/iOS-7-Simulator-Bug-demo
此演示仅使用界面构建器,根本没有手动代码,这就是我对此错误感到非常惊讶的原因。
重现:
我在viewDidAppear中记录window.hasAmbiguousLayout,并打印" false"对于iOS 8和" true"对于iOS 7.看起来iOS7为呈现视图控制器创建了错误的约束。我使用" po [[UIWindow keyWindow] _autolayoutTrace];"它证实了我的建议。
我不能相信只有我注意到这个问题。
有人可以帮助我知道:
它是模拟器错误还是它也发生在真实设备上? (我没有ios 7设备,只有8,苹果不允许降级ios)
或许它可以修复?
或者您只能尝试重现该窗口.hasAmbiguousLayout变为" true"在segue之后(我认为这是非常危险的错误):
添加到CustomViewController
- (void)viewDidAppear:(BOOL)animated {
UIWindow* window = [UIApplication sharedApplication].keyWindow;
NSLog(@"viewDidAppear hasAmbiguousLayout %@", ([window hasAmbiguousLayout] ? @"true" : @"false"));
}
将类CustomViewController应用于第二个视图控制器
我认为这是非常危险的行为。