繁体   English   中英

IOS 11:iPhone X 上的 UICollectionView 尺寸错误

[英]IOS 11: UICollectionView on iPhone X is sized wrong

我有一个集合视图,框架在 iPhone X 上显得太高。在其他所有设备上,大小和滚动都正常工作,如下所示:

在此处输入图片说明

但是在 iPhone X 上,它看起来像这样:

在此处输入图片说明

顶行被截断,它不会一直向下滚动到最后一行。 不知何故,调整大小正确计算了宽度而不是高度,大约 70 像素太高了。 (我不担心顶部和底部栏。稍后我会修复它们)

我猜这与 iPhone X 屏幕的插入调整有关,但我不知道如何修复它。 我已经在我调整集合视图大小的地方尝试过这个:

if #available(iOS 11.0, *) {
    collectionView.contentInsetAdjustmentBehavior = .always
}

但是,我似乎无法修复它。

编辑:

澄清一下,这个菜单的设置如下,屏幕上实际上有两个集合视图。 第一个在启用分页的情况下水平滚动,以便锁定到每个单元格。 其他集合视图是第一个的单元格,它们垂直滚动。 我们将调用这些 subCollectionViews。

subCollectionViews 正在接收来自太高的原始集合视图的大小。 在故事板上,集合视图的高度相对于顶部栏和底部分页栏定义为齐平。 在故事板中,集合视图的高度比运行时计算的高度大约 70 个像素。

所以对于单元格的布局指南:

override func awakeFromNib() {
    cellImage = UIImageView(frame: contentView.frame)
    cellImage?.contentMode = .scaleAspectFill
    cellImage?.clipsToBounds = true

    contentView.addSubview(cellImage!)
}

对于集合视图的布局:

        layout.scrollDirection = .vertical
        layout.minimumLineSpacing = 8
        layout.minimumInteritemSpacing = 8

对于故事板预设:

在此处输入图片说明

我想这就是你们所要求的。 如果有什么需要看的,尽管问。

我也面临这个问题。 需要调用safeAreaLayoutGuide来控制item的大小。

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    if #available(iOS 11.0, *) {
        return view.safeAreaLayoutGuide.layoutFrame.size
    } else {
        // Fallback on earlier versions
        return view.frame.size
    }
}

添加以下代码行。 我认为它会解决你的问题。

        override func viewWillAppear(_ animated: Bool) {
                super.viewWillAppear(animated)

                self.aCollectionVew.setNeedsLayout()
                self.aCollectionVew.layoutIfNeeded()
         }

请获取所有特征、 spacingcontentInsetAdjustmentBehavior

快乐编码...:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM