Swift - 如何确定 collectionView 的 scrollView.content.y?
Posted
技术标签:
【中文标题】Swift - 如何确定 collectionView 的 scrollView.content.y?【英文标题】:Swift -how is a collectionView's scrollView.content.y determined? 【发布时间】:2019-08-15 02:38:36 【问题描述】:我有一个包含 5 个单元格的 collectionView。使用此 scrollView 方法将 collectionView 向下拖动后,我可以获得以下信息:
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool)
let currentOffset = scrollView.contentOffset.y // 92 ???
print("currentOffset: \(currentOffset)")
let contentHeight = scrollView.contentSize.height // height of all the cells added together -616.310
print("contentHeight: \(contentHeight)")
let frame = scrollView.frame.size.height // height of the collectionView itself from it's topAnchor to it's bottomAnchor - 725
print("frame: \(frame)")
let maximumOffset = contentHeight - frame // -108.689453125 // distance between contentHeight (bottom of all the cells) and the frame
print("maximumOffset: \(maximumOffset)")
contentHeight
是所有单元格加在一起的高度,即:-616.310
frame
是 collectionView 本身在它的 topAnchor 和它的 bottomAnchor 之间的高度,即:725
maximumOffset
是 contentHeight(所有单元格的底部)与框架之间的距离,即:-108.689453125
我想不通的是currentOffset
(即92
)是从哪里来的。
This 不是很清楚:
contentOffset
内容视图的原点与 滚动视图的原点。
拖动collectionView后,currentOffset如何确定?
在下图中底部是带有来自scrollViewDidEndDragging
方法的打印语句的调试器
不确定这是否有任何区别,但 collectionView 的 topAnchor 和 bottomAnchor 被固定到视图的 safeAreaLayoutGuide ..., constant: 0
或直接锚定到它的顶部和底部
【问题讨论】:
【参考方案1】:在collectionView第一次被拖拽后,scrollView的左上角(0,0)距离collectionView的左上角(0,0)的顶部有多远。
所以它最初被拉高了 92 点 (0,-92) 然后放手。
【讨论】:
以上是关于Swift - 如何确定 collectionView 的 scrollView.content.y?的主要内容,如果未能解决你的问题,请参考以下文章
CollectionViews和TableView不在StackView中显示 - Swift 4