iOS_三種簡單動畫的實現

weixin_34075551發表於2016-05-12

1:頭尾式動畫.

// beginAnimations 表示此後的程式碼要參與到動畫中
[UIView beginAnimations:nil context:nil];
// 設定動畫持續時間
[UIView setAnimationDuration:0.5];
        
self.testView.frame = CGRectMake(screenW, screenH, 100, 100);

// commitAnimations,將beginAnimation之後的所有動畫提交併生成動畫
[UIView commitAnimations];

說明:如果只是修改控制元件的屬性,使用首尾式動畫還是比較方便的,但是如果需要在動畫完成後做後續處理,就不是那麼方便了

2:block 動畫


    CGFloat screenW = [UIScreen mainScreen].bounds.size.width - 120;
    CGFloat screenH = [UIScreen mainScreen].bounds.size.height - 120;

    [UIView animateWithDuration:0.7 animations:^{
        self.testView.frame = CGRectMake(screenW, screenH, 100, 100);
    } completion:^(BOOL finished) {
        self.testView.backgroundColor = [UIColor blueColor];
    }];

說明:
(1)在實際的開發中更常用的時block程式碼塊來處理動畫操作。
(2)塊動畫相對來說比較靈活,尤為重要的是能夠將動畫相關的程式碼編寫在一起,便於程式碼的閱讀和理解.

3:序列幀動畫



    UIImageView *img = [[UIImageView alloc]init];
    
    //這裡把要執行動畫的圖片存放到陣列中即可 
    NSMutableArray *arrayM = [NSMutableArray array];
    
    // 給圖片框設定圖片陣列
    [img setAnimationImages:arrayM];
    
    // 設定動畫播放時間
    [img setAnimationDuration:arrayM.count * 0.075];
    
    // 設定重複次數(預設是0)
    [img setAnimationRepeatCount:1];
    
    // 開始動畫
    [img startAnimating];
    
    // 停止動畫
    [img stopAnimating];
    
    // 動畫是否在執行
    BOOL isAnim = [img isAnimating];

說明:
專案中使用序列幀動畫,要考慮程式效能,(記憶體暴漲)播放動畫以後要清空圖片陣列.

相關文章