我正在尝试使用iOS 6.0中的新autolayout api构建动态布局.我尝试构建的布局有2个按钮,它们之间有一个标签,如下图所示:
我想要的是灰色显示的容器视图的大小增加或减少,具体取决于标签中的文本数量.
到目前为止,我已经设法使布局完全按照我无法解决的一个小问题的描述工作.我遇到的问题是标签的固有高度总是用标签的原始宽度(例如在界面构建器中设置的那个)计算,而不是根据我在其上的约束设置的标签的宽度.
我对视图的约束如下:
> H:| – [leftButton] – [label] – [rightButton] – |
>两个按钮都垂直居中
> V:| – [标签] – |
>按钮的内容拥抱优先级高于标签
>压缩标签的阻力高于容器视图
所有这些约束共同创建了所需的布局.
然而:
>如果界面构建器中的标签宽度(界面构建器中的文字大小)小于运行时视图的宽度,则容器的高度太大.
为了帮助澄清这一点,以上布局的IB视图如下(注意更窄)
>如果界面构建器中标签的宽度(界面构建器中的文字大小)大于运行时视图的宽度,则容器的高度太小,文本行被截断.
似乎正在发生的事情是,尽管标签宽度没有约束,但标签似乎根据标签创建时的原始宽度计算其高度(以及自动布局计算的容器高度).然而,最奇怪的是文本似乎是正确的宽度和高度,但标签本身有一个太大或太小的框架.
我想这与事情发生的顺序有关,并尝试在containerViews layoutSubview方法中调用updateConstraintsIfNeeded但是这似乎没有做任何事情.
任何建议将不胜感激.