【问题标题】:Weird AutoLayout Issue for UICollectionViewUICollectionView 的奇怪自动布局问题
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 我尝试将其设置为零,但同样的问题仍然存在。 ?
猜你喜欢
  • 1970-01-01
  • 2022-12-14
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 2014-06-12
  • 2013-04-07
相关资源
最近更新 更多