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
}
}
感谢罗布 - 你知道这是否通常在这个检查完成,即在layoutSubviews?想知道如果我错过了另一个回调,我应该考虑到 – Greg
这是一个很好的去处。 –