[問題] UIView和CALayer動畫的問題
最近遇到一個問題...UIImageView和CALayer的問題...
我在一個UIViewController的實例裡面
用 addSubview 的方式加進去一個事先做好的UIImageView實例(假設叫做ballOne)
[self.view addSubview:ballOne];
也用 addSublayer的方式加進去一個事先做好的CALayer實例(假設叫做ballTwo)
[self.view.layer addSublayer:ballTwo];
然後寫一個method(假設叫做rotation)去同時旋轉ballOne和ballTwo轉個0.01度
而且每呼叫一次rotation 這個角度就會多轉0.01度
-(void) rotation{
self.angle += 0.01; <== 每呼叫一次就會把這個角度疊加 0.01
CGAffineTransform rotate = CGAffineTransformMakeRotation(self.angle);
[self.ballOne setTransform:rotate];
for(CALayer ball in self.view.layer.sublayers){
[ball setAffineTransform:rotate];
}
}
然後在某個時候用一個 NSTimer 每隔 0.01秒 就呼叫 rotation 一次:
self.timer = [NSTimer scheduledTimerWithTimeInterval:0.01
target:self
selector:@selector(rotation)
userInfo:nil
repeats:YES];
原本我滿心期待這對 ball 會痛快地同步旋轉但是我看到的卻不是這樣...Orz.....
CALayer 的 ballTwo 好像會有一點點忽快忽慢...
UIImageView 的 ballOne 看起來就很規律地旋轉...
而且在用[self.timer invalidate]把這個 NSTimer 停住的那一個瞬間,
ballOne 停住之後,ballTwo 還會在轉一下才停住(很快就會停住)。
而之後如果再加 CALayer 的 ballFour 進去sublayer
和 UIImage 的 ballThree 進去subview
CALayer 的 ballTwo、ballFour 會同步,但是忽快忽慢...
UIImageView 的 ballOne、ballThree 也是會同步,而且很規律的轉...
所以這邊想問的是,有沒有什麼辦法讓這幾個 ball 同步、不要忽快忽慢地旋轉?...
-------------------
不知道是不是這樣...
CALayer部份會忽快忽慢是因為CALayer在轉動的時候就會預設用一小段時間來呈現
轉動過程的動畫。
而我的timer 設定少於這個時間,所以才會在上一段的動畫還沒結束前就開始下一個。
所以在把timer的時間大一些之後,就CALayer的部份不會有忽快忽慢的情形。
然而把UIView的物件用 setTransfor: 方式旋轉的話則沒有動畫效果。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.84.56.167
※ 編輯: onionys 來自: 219.84.56.167 (04/26 23:00)
※ 編輯: onionys 來自: 219.84.56.167 (04/26 23:19)
推
04/26 23:21, , 1F
04/26 23:21, 1F
→
04/27 07:52, , 2F
04/27 07:52, 2F
→
04/27 07:53, , 3F
04/27 07:53, 3F
※ 編輯: onionys 來自: 219.84.218.54 (04/28 20:39)
※ 編輯: onionys 來自: 219.84.218.54 (04/28 20:58)
→
04/28 21:01, , 4F
04/28 21:01, 4F
→
05/01 01:06, , 5F
05/01 01:06, 5F
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章