界面生成器 iOS 7 自动布局创建标签太高



我正在为iOS 7的XCode 5使用自动布局。我设置了一个 UILabel 约束,用于将空间引导到超级视图(这是 UIScrollView),顶部空间到图像视图,底部空间到超级视图,这会导致标签根据内容调整大小并指示滚动视图的内容大小——这是完美的。但是,每当设备旋转到纵向位置时,UILabel 的宽度都会扩展(我想要),但不再需要那么多的垂直空间......到超级视图的底部空间(等式:81 磅)创建一个 UILabel,该 UILabel 对于其内容来说太高,并且没有顶部垂直对齐,内容垂直居中。有没有办法自动处理这个问题,或者我是否需要在设备旋转时手动将底部空间扩展到超级视图?

界面生成器: http://cl.ly/image/2r1a3H1U2r0R ; http://cl.ly/image/2o2A3I44353a

肖像:http://cl.ly/image/060p2Z0L3S0D

景观:http://cl.ly/image/360E1u1s0R1H

不要设置标签的高度(通过设置其顶部底部),而是保留其高度。标签的高度将随着宽度的变化而自动增加或减少,以使其内容完美契合。

编辑:哎呀,未能足够仔细地阅读问题; 我们无法删除底部约束,因为它需要帮助设置超级视图(滚动视图的内容视图)的大小。在这种情况下,解决方案是通过设置标签self.preferredMaxLayoutWidth以匹配其宽度来提示标签为其内容假定正确的高度。这是我书中的代码,显示了以这种方式自动调整自己的 UILabel 子类:

-(void)layoutSubviews {
    [super layoutSubviews];
    self.preferredMaxLayoutWidth = self.bounds.size.width;
}

最新更新