我正在執行一個定製的拉到刷新組件。零速度的CALayer不會改變它的位置
有微調動畫創建的CALayer,比這層添加到UICollectionView。圖層的速度爲零(self.loaderLayer.speed = 0.0f;
),層動畫由timeOffset在scrollViewDidScroll:
中管理。問題就在這裏,因爲我也想拉動空間的中心總是顯示加載器,所以我改變層的位置scrollViewDidScroll:
這樣的:
[self.loaderLayer setPosition:CGPointMake(CGRectGetMidX(scrollView.bounds), scrollView.contentOffset.y/2)];
但沒有與層位置發生(主叫[self.loaderLayer setNeedsDisplay]
沒有幫助)。我知道這是因爲零速度。目前,我發現它的工作方式(但我不喜歡):
self.loaderLayer.speed = 1.0f;
[self.loaderLayer setPosition:CGPointMake(CGRectGetMidX(scrollView.bounds), scrollView.contentOffset.y/2)];
self.loaderLayer.speed = 0.0f;
我怎麼能更改暫停層正確的位置?我錯過了什麼?
設置'speed'到'0.0f'導致*所有動畫*該層被暫停;包括定位。實現你的「微調器動畫暫停」可能與你正在做的不同,但很難說沒有看到你構造你的微調器層的代碼。 – 2015-02-05 16:20:33
只需使用兩個不同的圖層,一個設置爲零速度,另一個設置爲要重新定位。一個可以容納另一個。 – matt 2015-02-05 16:44:00
是的,會包裝第二層。我只是認爲,無論暫停狀態如何,都有強制更新位置的正確方法。謝謝 – 2015-02-05 19:09:09