UIImageView在下一个ViewController Open上重叠UILabel

时间:2016-11-26 17:39:21

标签: ios swift uicollectionview swift3 uicollectionviewcell

我有一个父ViewController,它会打开第二个。 第二个ViewController包含图像中的网格视图。

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);
}

为什么第一次只有布局是正确的,然后布局改变,任何线索?

EDIT1:

以下是3D调试的屏幕截图

3d debugging first open

3d debugging second launch

2 个答案:

答案 0 :(得分:1)

尝试将UILabel的<ng-content *ngIf="ref != null"></ng-content>约束赋予图像。点击然后运行。 但在此之前,请确保您不需要静态高度aspect ratio。如果您希望imageView的高度不是增加或减少设备,那么只需给imageView静态height constraint而不是纵横比。你的问题将得到解决。

答案 1 :(得分:0)

尝试在xib文件中的UIImageView上将clipToBounds设置为true