這裡的旋轉是只影像像右邊或是向左邊旋轉 180 度,如左圖;而翻轉則是影像會往畫面後方逐漸縮小,翻轉一圈之後在逐漸放大,呈現鏡像之後的畫面,如右圖。由於在動畫製作的過程鏡射與旋轉都可以使用同一方法(設定 Scale)來達成,因此在動畫的製作上也只有參數上的差異,下面將演示兩個不同事件程式碼。
//旋轉
- (IBAction)onRotation:(id)sender {
//動畫的參數設定
[UIView beginAnimations:@"animation" context:nil];
[UIView setAnimationDuration:2];
[UIView setAnimationDelegate:self];
//設定動畫開始時的圖片狀態(當前狀態)
[UIView setAnimationBeginsFromCurrentState:YES];
//設定動畫結束時的圖片狀態(透明度與縮放比例)
logoImageView.transform = CGAffineTransformScale(logoImageView.transform , -1.0, -1.0);
//產生動畫
[UIView commitAnimations];
}
//翻轉
- (IBAction)onUpsideDown:(id)sender {
//動畫的參數設定
[UIView beginAnimations:@"animation" context:nil];
[UIView setAnimationDuration:2];
[UIView setAnimationDelegate:self];
//設定動畫開始時的圖片狀態(當前狀態)
[UIView setAnimationBeginsFromCurrentState:YES];
//設定動畫結束時的圖片狀態(透明度與縮放比例)
logoImageView.transform = CGAffineTransformScale(logoImageView.transform , -1.0, 1.0);
//產生動畫
[UIView commitAnimations];
}
關於上述程式碼注意設定 Scale 的部份有兩種方式可以設定。
CGAffineTransformMakeScale
CGAffineTransformScale
如果使用第一種方式設定,那麼按鈕只會在第一次觸發時生效,因為設定的 Scale 參數會和先前一次的執行結果相同,動畫就無法被產生,反之若採用第二種方式(就是本範例的設定方式),每次在設定 Scale 參數時都會以目前狀態為基準,所以會與上一次的執行結果不同。
沒有留言:
張貼留言