【发布时间】:2015-05-17 17:53:43
【问题描述】:
我一直在努力安装一个UIImageView,它使用Aspect Fill 显示可变宽度和高度的图像。单元格高度不适应 UIImageView 的新高度并保持其高度。
视图的层次结构是这样的
- UITableViewCell
- UITableViewCell.ContentView
- UIImageView
- UITableViewCell.ContentView
我在 XCode 自动布局中尝试了这些场景:
- 将
UIImageView => Height设置为remove at build time - 将
UIImageView的Intrinsic Value设置为placeholder - 将
UIImageView、ContentView和UITableViewCell的Intrinsic Value设置为placeholder
使用这些组合中的任何一种,我都会得到这样的观点:
http://i.stack.imgur.com/Cw7hS.png
蓝线代表单元格边界(边界),绿线代表UIImageView 边界(边界)。在这个例子中有四个单元格,第一个和第三个没有图像,第二个和第四个有相同的图像(溢出那些没有图像的)。
【问题讨论】:
-
为什么不使用
.ScaleToFill来计算必须在单元格中设置的图像的宽度和高度才能获得更好的结果? -
.ScaleToFill不会保持图像的纵横比。考虑一下这种情况,如果我有一个高度和宽度相等(正方形)的图像,并且想要放入UIImageView内,我相信它会拉伸。 -
是的,您是对的,但是如果您计算宽度与原始图像大小的比例,您可以将图像的宽度设置为大于单元格,并且图像将保持其纵横比。
-
假设我这样做了,单元格将如何根据其内容的高度调整其高度,特别是
UIImageView。考虑这样一种场景:手机摄像头在纵向模式下拍摄图像,并且高度远大于图像的宽度。 -
查看更新的答案。希望能帮到你
标签: ios uitableview swift autolayout