UIScrollView - 检测layoutSubviews中的滚动与方向变化?

Posted

技术标签:

【中文标题】UIScrollView - 检测layoutSubviews中的滚动与方向变化?【英文标题】:UIScrollView - detecting scrolling vs orientation change in layoutSubviews? 【发布时间】:2016-11-24 23:25:31 【问题描述】:

问题 - 在自定义 UIScrollView 的“layoutSubviews”回调中,如何检测滚动(可能不需要子视图重新布局)与其他事件(例如方向更改(是否需要重新布局)?

背景 - 我想在滚动发生时以编程方式添加/删除子视图,但在这种情况下,滚动视图上的现有视图不需要重新布局,所以我不想通过所有这些计算。但是,当发生诸如方向更改之类的事件时,我确实想重新计算所有位置。所以我的问题旨在找到处理这个问题的最佳方法。在这种情况下,我不想顺便使用 UIContainerView。

【问题讨论】:

【参考方案1】:
let priorLayoutSize = CGSize.zero

func layoutSubviews() 
    super.layoutSubviews()

    let layoutSize = bounds.size
    if layoutSize != priorLayoutSize 
        priorLayoutSize = layoutSize
        // do full layout
     else 
        // do incremental layout
    

【讨论】:

谢谢 Rob - 你知道这是否通常是检查完成的地方,即在 layoutSubviews 中?想知道我是否错过了另一个我应该考虑的回调

以上是关于UIScrollView - 检测layoutSubviews中的滚动与方向变化?的主要内容,如果未能解决你的问题,请参考以下文章

检测 UIScrollView 中的滚动事件并发送到 UITableView 或其他 UIScrollView

检测 UIScrollview 底部到达

检测 UIScrollView 位置

UIScrollView 检测滚动

检测用户何时将手指从 UIScrollView 上移开

在 UIScrollView 中检测长按