自动布局可视格式不适用于iOS 8

时间:2014-11-20 08:23:40

标签: ios iphone autolayout

我有一个简单的ViewController,其中只包含其默认视图,背景图片放在其上,我有以下updateViewConstraints方法,可以在iOS 7设备上完美运行(无需任何调用) to setNeedsXXX方法):

    -(void) updateViewConstraints {

[super updateViewConstraints];

[self.view removeConstraints:self.view.constraints];
NSDictionary *viewsDict = @{@"bgImage":self.bgImageView};

NSArray * constraints;
constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[bgImage]|" options:0 metrics:nil views:viewsDict];
[self.view addConstraints:constraints];

constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[bgImage]|" options:0 metrics:nil views:viewsDict];
[[self.view addConstraints:constraints];

}

但是,此方法在iOS 8设备上无法正常工作,背景图像向上移动并且不适合。

任何想法都会受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

这一行:[self.view removeConstraints:self.view.constraints];在iOS 8上移除了比在iOS 7上更多的内容。修复此问题的简单方法是添加一个数组,其中包含您添加到视图中的约束并仅删除这些约束。

也许您甚至可以完全删除此行,但这取决于您的应用程序。