这是我第一次提出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的问题。