2016-11-24 52 views
0

問題 - 在自定義UIScrollView的「layoutSubviews」回調中,如何檢測不同的滾動(可能不需要子視圖重新佈局)和其他事件,如方向更改(這需要重新佈局) ?UIScrollView - 在layoutSubviews中檢測滾動與方向變化?

背景 - 我想以編程方式添加/刪除子視圖作爲滾動發生,但在這種情況下scrollview上的現有視圖不需要重新佈局,所以我不想通過所有這些計算。然而,當發生諸如方向改變之類的事件時,我想重新計算所有位置。所以我的問題旨在找到解決這個問題的最佳方法。在這種情況下,我不想使用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 
    } 
} 
+0

感謝羅布 - 你知道這是否通常在這個檢查完成,即在layoutSubviews?想知道如果我錯過了另一個回調,我應該考慮到 – Greg

+0

這是一個很好的去處。 –