【发布时间】:2017-05-04 09:47:02
【问题描述】:
我正在制作一个具有固定高度和宽度以及水平滚动方向的集合视图。
一开始我将有 1 个单元格,我希望它位于集合视图的右侧而不是左侧,当更多单元格出现时,我希望它们堆叠在前一个单元格的右侧,如 1-2 - 3.
我搜索了一个答案,但所有类似的问题都是针对目标 c。
有什么想法我怎么能用 swift 做到这一点?
提前致谢。
【问题讨论】:
标签: ios swift swift3 uicollectionview
我正在制作一个具有固定高度和宽度以及水平滚动方向的集合视图。
一开始我将有 1 个单元格,我希望它位于集合视图的右侧而不是左侧,当更多单元格出现时,我希望它们堆叠在前一个单元格的右侧,如 1-2 - 3.
我搜索了一个答案,但所有类似的问题都是针对目标 c。
有什么想法我怎么能用 swift 做到这一点?
提前致谢。
【问题讨论】:
标签: ios swift swift3 uicollectionview
问题在于,如果您尝试在 viewWillAppear 中设置集合视图的 contentOffset,则集合视图尚未呈现其项目。因此 self.collectionView.contentSize 仍然是 {0,0}。解决方案是向集合视图的布局询问内容大小。
此外,您需要确保仅在 contentSize 高于集合视图的边界时设置 contentOffset。
func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let contentSize: CGSize? = collectionView?.collectionViewLayout.collectionViewContentSize
if contentSize?.height > collectionView?.bounds.size.height {
let targetContentOffset = CGPoint(x: 0.0, y: (contentSize?.height)! - (collectionView?.bounds.size.height)!)
collectionView?.contentOffset = targetContentOffset
}
}
【讨论】: