这是我第一次问堆栈溢出问题,所以希望我做对了。
当前,我遇到一个奇怪的自动布局问题,该问题使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还是很陌生,并且一直在阅读文档以尝试解决此问题,但似乎还无法破解。任何帮助表示赞赏。谢谢!