簡體   English   中英

UIView使用自定義屬性有條件地對子視圖進行動畫處理

[英]UIView animating subviews conditionally using custom property

我有兩個子視圖-滾動視圖,其內容偏移量是使用超級視圖上的一個(CGFloat) 屬性有條件地設置的。 我想對此屬性進行動畫處理,以使動畫流暢。
我的問題是當我使用

[UIView animateWithDuration:...
              ...
              animations:^{
 self.property = x;
}

動畫確實發生了,但是兩個滾動視圖是獨立動畫的,並且不遵循在setter中觸發的屬性設置的規則(遞歸調用在一個滾動視圖和另一個滾動視圖上設置偏移量等)。

我嘗試使用自定義CALayer,將其屬性“鏈接到自定義視圖的屬性並使用CoreAnimation對該屬性進行動畫處理”,其中動畫keyPath就是該屬性。 我超越了

+(BOOL)needsDisplayForKey:(NSString *) key

結果,沒有動畫。 有什么方法可以使我的屬性動畫化,從而使結果是一個流暢的動畫?

編輯:我知道這可以通過使用計時器和做一些數學運算(對於動畫的計時器功能,如“緩出”的效果)來完成,但是我猜想可能會有更優雅的解決方案和更可重用的(使用不同的計時器功能)等)。

您的財產是什么類型或類別? 您不太可能使用帶有持續時間的動畫來增加任何基本類型,最好使用for循環並自己增加它。

最后,我使用CADisplayLink連續更新屬性值,並使用緩動函數計算緩和效果的更新差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM