Interface Builder iOS 7自动布局创建的标签太高

Interface Builder iOS 7自动布局创建的标签太高,ios,ipad,interface-builder,xcode5,autolayout,Ios,Ipad,Interface Builder,Xcode5,Autolayout,我在iOS7上使用XCode 5的自动布局。我已经设置了一个UILabel,其中包含指向superview(这是一个UIScrollView)的前导空间、指向imageview的顶部空间和指向superview的底部空间的约束,这会导致标签根据内容调整大小,并指示scrollview的内容大小,这非常完美。但是,每当设备旋转到纵向位置时,UILabel的宽度就会扩大(我希望如此),但不再需要那么多垂直空间。。。Superview的底部空间(eq:81 pts)创建的UILabel对于其内容来说太

我在iOS7上使用XCode 5的自动布局。我已经设置了一个UILabel,其中包含指向superview(这是一个UIScrollView)的前导空间、指向imageview的顶部空间和指向superview的底部空间的约束,这会导致标签根据内容调整大小,并指示scrollview的内容大小,这非常完美。但是,每当设备旋转到纵向位置时,UILabel的宽度就会扩大(我希望如此),但不再需要那么多垂直空间。。。Superview的底部空间(eq:81 pts)创建的UILabel对于其内容来说太高,并且没有顶部垂直对齐,内容将垂直居中。是否有办法自动处理此问题,或者是否需要手动将底部空间扩展到设备旋转时的superview

界面生成器:

肖像:


横向:

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

编辑:oops,没有仔细阅读问题;我们无法删除底部约束,因为需要它来帮助设置superview(滚动视图的内容视图)的大小。在这种情况下,解决方案是通过将标签的
self.preferredMaxLayoutWidth
设置为与其宽度匹配,来提示标签为其内容采用正确的高度。下面是我的书中的代码,它显示了一个UILabel子类,该子类以这种方式自动调整自身:

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

注意:我还尝试将底部空间设置为Superview>=81为no available如果我将底部空间删除为Superview,它将不再强制scrollview的contentview展开,并且实际上会在布局过程中被剪裁。请将标签的
preferredMaxLayoutWidth
设置为与其宽度匹配。这将迫使标签采用正确的高度。我在阅读了以下答案后得出了该解决方案:请参阅我的代码书(本节末尾:)。谢谢你的勾选;我不配,因为我没有仔细阅读你的问题。我将编辑以改进我的答案。是的,我在上面编辑我的答案时复制了该代码。很高兴你把这个整理好了!