【发布时间】:2020-09-10 12:38:33
【问题描述】:
这是我第一次问堆栈溢出问题,所以希望我做对了。
目前,我遇到了一个奇怪的自动布局问题,它使 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
如果我随后在 Interface Builder 中选择 iPhone 8 并“重置为建议的约束”,它就会在 iPhone 8 上正常工作,而不是在 iPhone 11 上。以下是一些图片显示:
在 Interface Builder 中选择 iPhone 8: iPhone 8 Interface Builder
iPhone 8 现在可以使用: enter image description here
这让我相信这是一个约束问题。我对 AutoLayout 很陌生,并且一直在阅读文档以尝试解决这个问题,但似乎还不能破解它。任何帮助表示赞赏。谢谢!
【问题讨论】:
-
你是如何通过代码或故事板设置约束的?
-
@Frankenstein 我正在通过 Storyboard 完全设置约束。知道它可能是什么吗?
-
有了这些有限的信息,除非我想到了,否则我无法判断。能否在 Playground 上重现该错误并发布代码?
-
@Frankenstein 我不确定如何重新创建错误,如果我能够将您链接到我的公共存储库,这会有所帮助吗?
-
当然可以,我可以看看。
标签: swift iphone xcode uicollectionview autolayout