7.2 完成塊

2018-02-24 15:07 更新

完成塊

基于UIView的block的動畫允許你在動畫結束的時候提供一個完成的動作。CATranscation接口提供的+setCompletionBlock:方法也有同樣的功能。我們來調(diào)整上個例子,在顏色變化結束之后執(zhí)行一些操作。我們來添加一個完成之后的block,用來在每次顏色變化結束之后切換到另一個旋轉90的動畫。代碼見清單7.3,運行結果見圖7.2。

清單7.3 在顏色動畫完成之后添加一個回調(diào)

- (IBAction)changeColor
{
    //begin a new transaction
    [CATransaction begin];
    //set the animation duration to 1 second
    [CATransaction setAnimationDuration:1.0];
    //add the spin animation on completion
    [CATransaction setCompletionBlock:^{
        //rotate the layer 90 degrees
        CGAffineTransform transform = self.colorLayer.affineTransform;
        transform = CGAffineTransformRotate(transform, M_PI_2);
        self.colorLayer.affineTransform = transform;
    }];
    //randomize the layer background color
    CGFloat red = arc4random() / (CGFloat)INT_MAX;
    CGFloat green = arc4random() / (CGFloat)INT_MAX;
    CGFloat blue = arc4random() / (CGFloat)INT_MAX;
    self.colorLayer.backgroundColor = [UIColor colorWithRed:red green:green blue:blue alpha:1.0].CGColor;
    //commit the transaction
    [CATransaction commit];
}

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號