我有一個UIView。我將動畫應用到CALayer。將CALayer更改應用到UIView
[view.layer addAnimation:groupAnimation forKey:name];
我希望圖層的最終狀態成爲動畫後UIView的狀態。比方說,我旋轉了45度,並移動到一個新的位置使用圖層;動畫之後我的觀點能否處於這種狀態?因爲現在,在動畫之後,它會回到UIView的原始狀態。我希望能得到一些幫助。謝謝。
我有一個UIView。我將動畫應用到CALayer。將CALayer更改應用到UIView
[view.layer addAnimation:groupAnimation forKey:name];
我希望圖層的最終狀態成爲動畫後UIView的狀態。比方說,我旋轉了45度,並移動到一個新的位置使用圖層;動畫之後我的觀點能否處於這種狀態?因爲現在,在動畫之後,它會回到UIView的原始狀態。我希望能得到一些幫助。謝謝。
要理解的是,層動畫只是動畫;它只是一種覆蓋屏幕的臨時「電影」。當動畫結束時,「電影」被刪除,從而揭示真實情況。這是由你來配合電影的最後一幀的情況。
UIView動畫在很大程度上爲您做到了這一點。但層動畫完全取決於你。
因此,假設您爲位置變化設置動畫;做一些事情,這樣圖層或視圖實際上就是你動畫完全取決於你的位置。
通常情況下,您將自己作爲一組獨立的命令執行。但要小心,不要做任何可能觸發隱式層動畫的事情,因爲這會與您正在嘗試明確執行的動畫衝突。
這裏的示例代碼(不涉及你的,但它確實表明了一般形式):
CAAnimationGroup* group = // ...
// ... configure the animation ...
[view.layer addAnimation:group forKey:nil];
// now we are ready to set up the view to look like the final "frame" of the animation
[CATransaction setDisableActions:YES]; // do not trigger implicit animation by mistake
view.layer.position = finalPosition; // assume we have worked this out
當動畫化的CALayer或使用CAAnimationGroup,以下屬性必須設置,如:
groupAnimation.removedOnCompletion = NO;
groupAnimation.fillMode = kCAFillModeForwards;
參見:After Animation, View position resets
另外請注意,它可能有助於申請動畫直接訪問視圖本身,而不是訪問視圖的圖層。這是使用動畫塊完成的,我發現它非常有用。
座風格動畫可以在許多方面進行自定義,但這裏有一個簡單的例子,它可以在一個函數中,當你需要,以動畫調用:
- (void) animateMyView
{
CGRect newViewFrame = CGRectMake(x,y,w,h);
[UIView animateWithDuration:0.5
delay:0
options: (UIViewAnimationOptionCurveLinear)
animations:^{
self.myView = CGAffineTransformMakeRotation (45);
[self.myView setBounds:newViewFrame];
}
completion:NULL];
}
欲瞭解更多信息,請參閱Apple's documentation on View Animation。
我的自動佈局被禁止,但仍動畫後,它會恢復到原來的狀態。實際上,我嘗試了UIViewAnimation,但是我無法實現我想要的。 CALayer動畫更加靈活。有沒有一種方法可以確保我的UIView將處於與其動畫層相同的狀態? – cessmestreet
回答更新,以包括以下信息: 當一個動畫或CALayer的使用CAAnimationGroup,以下屬性必須設置: groupAnimation.removedOnCompletion = NO; groupAnimation.fillMode = kCAFillModeForwards; 另請參閱:http://stackoverflow.com/questions/226555/after-animation-view-position-resets – JRJ
以這種方式濫用'removedOnCompletion'絕對是錯誤的事情,不應該給建議 – matt
並從這裏開始看到我關於此主題的完整教程:http://www.apeth.com/iOSBook/ch17.html#_using_a_cabasicanimation – matt
感謝您的這一點。你太棒了! – cessmestreet