【发布时间】:2015-03-28 01:54:00
【问题描述】:
我已将问题修改为提供更多信息且更清晰。
我想要一个动态表格视图单元格,具有灵活高度的 UITextView 和可选的 UIImageView。根据 UITextView 和可选 UIImageView 的内容大小,可以缩小或扩展单元格。
这是我所期望的(下图):
- 正常大小:TextView 的高度是固定的(比如 77)。 ImageView 的宽度和高度也是固定的(比如 130、130)
- TextView 内容大小减小时,单元格缩小,ImageView 向上移动。
- ImageView 中没有图片时,ImageView 不显示,单元格缩小。
以下是视图的结构:
- mainView 是 contentView 的子视图
- topView、textView、bigImageView、bottomView是mainView的子视图
但是,我实际得到的如下。
- 左图:如果内容过大,则看不到ImageView。
- 右图:如果内容大小为一行,可以看到ImageView,但是它的宽高不是固定的130、130
警告问题如下:
如果我通过选择“添加缺少的约束”来修复它,我得到的结果如下:
- 右图显示TextView的高度不再灵活。
TextView 的约束、Content Hugging Priority、Content Compression Resistance 和 Intrinsic Size:
- 我没有为这个 TextView 使用 Intrinsic size
ImageView 的约束、Content Hugging Priority、Content Compression Resistance 和 Intrinsic Size:
- 我为这个 ImageView 使用了 Intrinsic size
我一直在为 TextView 和 ImageView 使用 Hugging Priority 和 Compression Resistance Priority 但没有运气。结果都不是我预期的。
请帮忙指出设置中有什么问题以及如何实现我的目标。
【问题讨论】:
-
您是否在控制台中收到任何关于不满足约束的错误?只要您固定图像宽度/高度并且图像底部固定到外部视图并且顶部固定到文本区域,这种布局应该没问题。如果蓝色区域是 contentView 内部的一个视图,它也需要固定到 contentView 的底部。最好在预览面板中查看它,看看它会如何出现在屏幕上。您的图像似乎来自故事板?
-
谢谢罗里。我急着问这个问题,但现在我认为我的问题的信息不是那么清晰和混乱。我现在修改一下。
-
在 IB 中设置“固有大小”在运行时不会产生任何影响。这只是一种通知 IB 视图在运行时将具有固有大小的方法,这样它就不会在设计时抱怨或做错事。如果你告诉 IB 关于运行时间的内容是错误的,那么你会得到错误的结果。换句话说,您几乎不应该更改该设置。如果您希望图像视图始终根据其显示的图像调整大小,请将其拥抱和压缩阻力优先级设置为 1000。对于文本视图也是如此。尽可能避免设置明确的尺寸限制。
-
我把'intrinsic size'改回默认值,并将它们的拥抱和抗压优先级设置为1000,但仍然是错误的。我有什么遗漏吗?
-
您现在遇到的具体错误是什么?
标签: ios autolayout constraints