- (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;
}
Core Animation动画学习4——关键帧动画实现中心掏空遮罩
最新推荐文章于 2025-11-10 18:01:49 发布
本文将介绍如何利用Core Animation在iOS应用中创建动态遮罩效果,并通过关键帧动画实现遮罩区域的平滑过渡,提升用户体验。

2567

被折叠的 条评论
为什么被折叠?



