UIScrollView - 检测布局子视图中的滚动与方向变化?

UIScrollView - detecting scrolling vs orientation change in layoutSubviews?

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

背景 - 我想在滚动发生时以编程方式 add/remove 子视图,但在这种情况下,滚动视图上的现有视图不需要重新布局,所以我不想经历所有这些计算。但是,当发生诸如方向更改之类的事件时,我确实想重新计算所有位置。所以我的问题旨在找到处理这个问题的最佳方法。在这种情况下,我不想顺便使用 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
    }
}