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

问题描述:

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

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

let priorLayoutSize = CGSize.zero 

func layoutSubviews() { 
    super.layoutSubviews() 

    let layoutSize = bounds.size 
    if layoutSize != priorLayoutSize { 
     priorLayoutSize = layoutSize 
     // do full layout 
    } else { 
     // do incremental layout 
    } 
} 
+0

感谢罗布 - 你知道这是否通常在这个检查完成,即在layoutSubviews?想知道如果我错过了另一个回调,我应该考虑到 – Greg

+0

这是一个很好的去处。 –