任何自动布局大师能够启发我约束和旋转?

Posted

技术标签:

【中文标题】任何自动布局大师能够启发我约束和旋转?【英文标题】:Anyone auto-layout masters able to enlighten me on constraints and rotation? 【发布时间】:2012-08-13 23:26:40 【问题描述】:

我正在尝试通过纵向和横向视图找出自动布局约束。在纵向中,我有一个 320x200 像素的容器视图(但任何视图都可以)。当手机旋转到横向时,我希望该容器视图以 480x320 填充屏幕。

现在我完全在 IB 中做这件事,并且现在正努力保持这种状态。当我尝试将视图设置为按照我的意愿调整大小时,我遇到了蓝色和紫色的约束图标。

我观看了 WWDC 自动布局视频,并在其他视图中使用了自动布局,但我就是无法实现这种看似简单的改变。

任何帮助将不胜感激。谢谢。

【问题讨论】:

【参考方案1】:

在 2012 年 WWDC 视频 228 - Mastering Auto layout 中,他展示了类似这样的内容

for (UIView *aView in [yourViewController subviews]) 
if ([aView hasAmbiguousLayout]) 
    NSLog(@"View Frame %@", NSStringFromCGRect(aView.frame));
    NSLog(@"%@", [aView class]);
    NSLog(@"%@", [aView constraintsAffectingLayoutForAxis:1]);
    NSLog(@"%@", [aView constraintsAffectingLayoutForAxis:0]);

    [aView exerciseAmbiguityInLayout];
 

尝试一下,看看您是否有任何模棱两可的布局。当然在轮换之后这样做,一切都不对。

如果这没有产生任何结果,那么只需在您的特定视图上使用 constraintsAffectingLayoutForAxis 方法,您应该会看到约束不允许它更改。

很可能存在需要降低的优先级过高的约束。

【讨论】:

【参考方案2】:

我不得不使用不等式。例如,纵向的文本区域宽度需要为 100,但横向宽度需要 >100 才能拉伸。其他约束已经到位,我已经把它拉到一边了。我还启用了横向模式。当我现在旋转时,我的 4 行文本非常巧妙地重排为 2 行。

【讨论】:

以上是关于任何自动布局大师能够启发我约束和旋转?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 中的自动布局

使用自动布局约束旋转后对齐 UILabel 文本

自动旋转时自动布局约束更新

自动布局、约束和旋转

ScrollView 自动布局约束打破设备旋转

在屏幕旋转之前,自动布局约束不正确? [复制]