AutoLayout无法正确调整大小

时间:2014-06-25 02:11:43

标签: ios

这是我视图的层次结构 上海华
-wrapperview
- 儿童观察
--childview

当我使用autolayout时,我想要的是所有子视图的宽度都等于superview。但只是包装视图相等

示例:
- 在肖像中:superview = wrapperview = 768但是子视图是1024 - 在横向:superview = wrapperview = 1024但是childview是768

有人知道那里发生了什么吗?

1 个答案:

答案 0 :(得分:0)

如果将子视图固定在超级视图的边缘,并且它的内容大于超级视图(在您的情况下很可能),那么如果您和&#39> #39;重新使用可视化格式化语言。

例如,假设您的childView是UIImageView,并且其图像的尺寸为1024 x 1024。

如果您的自动布局类似于:

[self.wrapperView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[imageView]|" options:0 metrics:nil views:views]];

然后你的imageView会将wrapperView推出去。

您需要做的是使用这种约束方法,这更加明确:

[self.wrapperView addConstraint:[NSLayoutConstraint constraintWithItem:self.childView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.wrapperView attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0.0]];

这告诉autolayout,您的子视图宽度应该等于包装器视图的宽度,并且永远不会大于(由NSRelationEqual标志指定)。