我对iOS 8 autolayout
有疑问
我希望自定义UITableviewCell
包含UILabel
和5 UIImageView
。我希望图像以横向模式显示,但不能以纵向模式显示,因为UILabel
会被挤压缩小。
我在界面构建器中设计了视图并添加了以下约束(以及其他):
1. priority 1000: Label width >= 120px
2. priority 1000: ImageView[1..5]
horizontal space to next one = 0px (to align them next to each
other, the rightmost image view got horizontal space = 0 to content
view to align them to the right side)
3. priority 999: ImageView[1..5]
width = 40px
4. priority 998: ImageView[1..5] width = 0px (hide image
views if the 40px constraint can't be satisfied because of the
required label width)
我还设置ImageView
使图像居中并剪辑子视图,并将内容压缩优先级设置为1(最低)。
UILabel
内容拥抱优先级我也设置为1,因此如果文本短于120px,它甚至会调整大小。
现在发生的事情是:
| Labelxxxxx img1 img2 img3 img4 img5 |
| Labelxxxxx im.im.im.im.im. |
我没有得到任何关于任何不可满足约束的异常或日志消息(即使图像视图被挤压到10px,也不会出现40px约束)
提前感谢您提供的任何帮助!
- 编辑 -
我尝试了一些替代方法,包括以编程方式设置约束,但看起来它们在使用IB时也按预期设置。
难道不可能设置具有不同优先级的2个矛盾约束 - 只要具有更高优先级的约束需要被打破以获得更高约束的优势,第二个应该被用作故障转移?
(在我的情况下:标签宽度=最高优先级,中断ImageView
宽度40px约束 - > ImageView
宽度0px作为故障转移)
答案 0 :(得分:0)
我可能会将IBOutlets连接到宽度约束,并在旋转时将宽度更改为0.
答案 1 :(得分:0)
我有类似的问题,但通过以下方法解决
在UITableViewCell中添加了一个DummyView,并将DummyView的所有方面都固定到UITableViewCell。
现在在DummyView中添加所有图像,标签和其他子视图。
为DummyView和您添加的子视图创建IBOutLet。
以编程方式删除所有约束
以编程方式根据设备方向添加所有约束。