我有autoresizingMask=UIViewAutoresizingFlexibleWidth
和translatesAutoresizingMasksIntoConstraints=YES
的观点(非自动布局)。
它被添加到宽度为320的superview中,因此它也是320宽度。旋转到横向时,它变为568宽度。我希望在旋转到横向时将宽度限制为400。我的方法是当方向改变时,如果超级视图是>,则将视图的框架设置为400宽度。 400。
- (void)orientationChanged:(NSNotification*)notification {
if (self.superview) {
float superviewWidth = self.superview.bounds.size.width;
if (superviewWidth > 400.0) {
CGRect oldFrame = self.frame;
self.frame = CGRectMake((superviewWidth - 400.0)/2.0, oldFrame.origin.y, 400.0, oldFrame.size.height);
}
}
}
我的问题是,更改视图的框架是否安全
通常,当涉及约束时,通过它们执行调整大小和动画,而不是帧。这也适用于此吗?我担心任何可能的大小副作用,比如在纯自动布局中对帧而不是约束进行动画时会发生什么。
答案 0 :(得分:0)
如果视图配置了基于约束的布局,则不应手动调整帧,因为它将在下一个布局过程中更改。您可以通过在视图上设置最大宽度约束来轻松完成此操作。
如果它没有配置基于约束的布局,那么您当前的解决方案将起作用,尽管视图修改自己的框架是不好的做法(视图的框架应该由其超级视图或其视图控制器修改)。