ios - UIImageView 在下一个 ViewController 打开时与 UILabel 重叠

标签 ios swift uicollectionview swift3 uicollectionviewcell

我有一个父 ViewController,它打开了第二个。 第二个 ViewController 包含一个 GridView ,如图所示。

Correct Image

当我返回并再次进入同一屏幕时,我发现布局已更改为这个

Wrong Image

在第二张图片中,UIImage 与标签重叠。

这是我的 InterfaceBuilder 设置

enter image description here

我使用以下代码更改大小和 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 调试的屏幕截图

3d debugging first open

3d debugging second launch

最佳答案

尝试从 UILabel 到图像提供 aspect ratio 约束。打了然后跑。 但在此之前,请确保您不希望 imageView 有静态高度。如果你不想在设备上增加或减少 imageView 的高度,那么只需要给 imageView 一个静态的 height constraint 而不是纵横比.您的问题将得到解决。

关于ios - UIImageView 在下一个 ViewController 打开时与 UILabel 重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40821155/

相关文章:

iphone - 如何在IOS中动态调用类方法?

ios - 预填充 UICollectionView 单元重用队列

ios - 重新加载 collectionView 时内存泄漏 : Firebase

ios - 我不必解包 Swift 可选的情况?

ios - 在 Swift 3 或 4 中检查 if 条件矩阵

ios - 为应用商店版本禁用曲棍球

ios - UITabBarController 不更改 'more' 按钮图标的颜色

objective-c - 行代码在 lldb `p` 中工作,代码在托管单元测试中失败

swift - 如何在 WKWebView (Swift) 中使用 PDF 一次滚动一个 View 的高度(不是页面)

objective-c - insertItemsAtIndexPaths 更新错误