【发布时间】:2019-10-27 19:51:00
【问题描述】:
我想在UICollectionView 的每个单元格中显示一个图像。图像应与屏幕具有相同的宽度,但它们的高度将取决于它们的大小。我想确保图像被限制在宽高比范围内(例如 1.91 到 4/5)。存储在服务器上的图像可以是任意宽高比;因此,它们不受约束。当在UICollectionViewCell 中显示时,如果它们小于或大于边界框范围(即 1.91 到 4/5),则它们应按比例缩放以填充。
例如,如果图像的纵横比为 2:1,则应将其限制为 1.91:1。如果它的纵横比为 1:2,则应将其限制为 4:5。我想使用新的UICollectionViewCompositionalLayout。
对于这项工作,最初我想到的是预先计算高度并将它们存储在数据模型中,并据此更新视图高度。请参阅 View height constraints are not set correctly as I scroll UICollectionView up and down,但我对这种方法有疑问。
我的初学者问题是,是否可以为同一个锚定义两个约束来定义一个范围?
_imageContainer.heightAnchor.constraintGreaterThanOrEqualToAnchor(_imageContainer.widthAnchor, multiplier: 4.0/5).active = true
_imageContainer.heightAnchor.constraintLessThanOrEqualToAnchor(_imageContainer.widthAnchor, multiplier: 1.91).active = true
上述代码的目标是定义一个范围约束。第二个约束是否会覆盖第一个约束以使第一个约束不再有效?其次,对于上述关于在不同高度显示图像的问题,推荐的方法是什么?
【问题讨论】:
标签: ios xamarin uicollectionview nslayoutconstraint aspect-ratio