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
}
}
问题 - 在自定义 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
}
}