UICollectionView的奇怪的自动布局问题

问题描述 投票:0回答:1

这是我第一次提出Stack Overflow问题,所以希望我做的对。

目前,我遇到了一个奇怪的自动布局问题,它使得一个UICollectionView根据我加载的iPhone大小而表现不同。我正在创建的应用程序是一个日程表应用程序,在该应用程序中,你能够选择一个特定的日子来查看或创建该日的日程表。目前,在较大的iPhone上都能很好地工作,几乎是iPhone 11及以上。

我在View Controller里有一段代码,选择数组中的中间项,也就是今天的日期,并选择CollectionView中的中间项。

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

        dateCollectionView.selectItem(at: IndexPath.init(item: CalendarModel.CURRENT_DAY, section: 0), animated: true, scrollPosition: .centeredHorizontally)
    }

最后的效果是这样的。AutoLayout Working

但是,当我选择了更小的屏幕,比如iPhone 8,你可以看到,它并没有像iPhone 11那样走到日历数组的中间,而是在数组的开头显示CollectionView。

看起来是这样的。AutoLayout Doesn't Work

如果我在界面生成器中选择iPhone 8,然后 "重置为建议的约束",那么它就能在iPhone 8上正常工作,而在iPhone 11上则不能。下面是一些图片显示。

在界面生成器中选择iPhone 8iPhone 8界面生成器

iPhone 8现在可以用了。在这里输入图片描述

这让我相信这是一个约束的问题。我对AutoLayout很陌生,一直在阅读文档,试图弄清楚这个问题,但似乎还不能破解它。任何帮助都是感激的。谢谢!这是我第一次问Stack的问题。

swift iphone xcode uicollectionview autolayout
1个回答
0
投票

我之前也面临过这个问题,原因是在这里设置了集合视图的最小间距。

storyboard spacing

试着把它设置为零,看看是否有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.