我有一个父 ViewController,它打开了第二个。 第二个 ViewController 包含一个 GridView ,如图所示。
当我返回并再次进入同一屏幕时,我发现布局已更改为这个
在第二张图片中,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 调试的屏幕截图
最佳答案
尝试从 UILabel 到图像提供 aspect ratio
约束。打了然后跑。
但在此之前,请确保您不希望 imageView
有静态高度。如果你不想在设备上增加或减少 imageView
的高度,那么只需要给 imageView
一个静态的 height constraint
而不是纵横比.您的问题将得到解决。
关于ios - UIImageView 在下一个 ViewController 打开时与 UILabel 重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40821155/