UICollectionView的奇怪的自动布局问题

时间:2020-05-23 17:23:03

标签: swift iphone xcode uicollectionview autolayout

这是我第一次问堆栈溢出问题,所以希望我做对了。

当前,我遇到一个奇怪的自动布局问题,该问题使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那样进入日历数组的中间,而是在Collection的开头显示了CollectionView。数组。

看起来像这样: AutoLayout Doesn't Work

如果我随后在“界面生成器”中选择“ iPhone 8”并“重置为建议的约束”,则它可以在iPhone 8上正常运行,而不能在iPhone 11上正常运行。这是一些图片,显示:

在Interface Builder中选择iPhone 8: iPhone 8 Interface Builder

iPhone 8现在可以使用: enter image description here

这使我相信这是一个约束问题。我对AutoLayout还是很陌生,并且一直在阅读文档以尝试解决此问题,但似乎还无法破解。任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

我之前遇到过这个问题,原因是在此处设置了集合视图的最小间距:

storyboard spacing

尝试将其设置为零,看看是否有帮助。

相关问题