UIImageView 在下一个 ViewController 打开时与 UILabel 重叠
UIImageView overlaps UILabel on next ViewController Open
我有一个父 ViewController 打开了第二个。
第二个 ViewController 包含如图中所示的网格视图。
当我返回并再次进入同一屏幕时,我发现布局已更改为此
在第二张图片中,UIImage 与标签重叠。
这是我的 InterfaceBuilder 设置
我使用以下代码更改大小和 EdgeInsets
func collectionView(_ collectionView: UICollectionView, layout: UICollectionViewLayout, sizeForItemAtIndexPath: IndexPath) -> CGSize {
let width = collectionView.frame.size.width/2 - 8*2
if let cell = collectionView.cellForItem(at: sizeForItemAtIndexPath) {
return CGSize(width: width, height: cell.frame.height)
} else {
return CGSize(width: width, height: 104)
}
}
func collectionView(_ collectionView: UICollectionView, layout: UICollectionViewLayout, insetForSectionAtIndex : NSInteger) -> UIEdgeInsets {
return UIEdgeInsets(top: 8, left: 8, bottom: 8, right: 8);
}
为什么第一次只有布局正确,然后布局发生变化,有什么线索吗?
编辑1:
这是 3d 调试的屏幕截图
尝试在 xib 文件中将 UIImageView 的 clipToBounds
设置为 true
尝试从 UILabel 到图像提供 aspect ratio
约束。点击然后 运行。
但在此之前,请确保您不需要静态高度 imageView
。如果你不希望 imageView
的高度在设备方面不增加或减少,那么只需给 imageView
一个静态的 height constraint
而不是纵横比。您的问题将得到解决。
我有一个父 ViewController 打开了第二个。 第二个 ViewController 包含如图中所示的网格视图。
当我返回并再次进入同一屏幕时,我发现布局已更改为此
在第二张图片中,UIImage 与标签重叠。
这是我的 InterfaceBuilder 设置
我使用以下代码更改大小和 EdgeInsets
func collectionView(_ collectionView: UICollectionView, layout: UICollectionViewLayout, sizeForItemAtIndexPath: IndexPath) -> CGSize {
let width = collectionView.frame.size.width/2 - 8*2
if let cell = collectionView.cellForItem(at: sizeForItemAtIndexPath) {
return CGSize(width: width, height: cell.frame.height)
} else {
return CGSize(width: width, height: 104)
}
}
func collectionView(_ collectionView: UICollectionView, layout: UICollectionViewLayout, insetForSectionAtIndex : NSInteger) -> UIEdgeInsets {
return UIEdgeInsets(top: 8, left: 8, bottom: 8, right: 8);
}
为什么第一次只有布局正确,然后布局发生变化,有什么线索吗?
编辑1:
这是 3d 调试的屏幕截图
尝试在 xib 文件中将 UIImageView 的 clipToBounds
设置为 true
尝试从 UILabel 到图像提供 aspect ratio
约束。点击然后 运行。
但在此之前,请确保您不需要静态高度 imageView
。如果你不希望 imageView
的高度在设备方面不增加或减少,那么只需给 imageView
一个静态的 height constraint
而不是纵横比。您的问题将得到解决。