Core Animation動畫學習4——關鍵幀動畫實現中心掏空遮罩

這裏寫圖片描述

這裏寫圖片描述

- (void)showMask {

    [UIApplication sharedApplication].keyWindow.backgroundColor = [UIColor redColor];

    CALayer *maskLayer = [CALayer layer];
    maskLayer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"mask"].CGImage);
    maskLayer.position = self.view.center;
    maskLayer.bounds = CGRectMake(0, 0, 100, 100);


    self.navigationController.view.layer.mask = maskLayer;

    CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"bounds"];
    anim.duration = 2;
    anim.beginTime = CACurrentMediaTime();
    anim.delegate = self;
    NSValue *initBounds = [NSValue valueWithCGRect:CGRectMake(0, 0, 100, 100)];
    NSValue *middleBounds = [NSValue valueWithCGRect:CGRectMake(0, 0, 80, 80)];
    NSValue *finalBounds = [NSValue valueWithCGRect:CGRectMake(0, 0, 2000, 2000)];
    anim.values = @[initBounds,middleBounds,finalBounds];
    anim.keyTimes = @[@0, @0.5, @1];
    anim.timingFunctions = @[[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    anim.removedOnCompletion = NO;
    anim.fillMode = kCAFillModeForwards;

    [self.navigationController.view.layer.mask addAnimation:anim forKey:nil];

}

- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
    self.navigationController.view.layer.mask = nil;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章