Попробуйте следующий код.Этот код будет работать в приложении Какао для MacOS.Пожалуйста, измените классы соответственно, если вы собираетесь использовать Cocoa Touch для iOS.Я надеюсь, что это работает для вас.
// ViewController.h
import
@ interface ViewController: NSViewController {
CALayer * maskLayer;
CALayer * Layer;
}
// ViewController.m
@ реализация ViewController
- (void) viewDidLoad {
[super viewDidLoad];
maskLayer = [CALayer layer];
Layer = [CALayer layer];
Layer.backgroundColor = [[NSColor blueColor] CGColor];
Layer.frame = CGRectMake(20, 20, 720, 900);
Layer.contents = [NSImage imageNamed:@"bg1"];
maskLayer.frame = CGRectMake(20, 20, 720, 900);
maskLayer.opacity = 0.5;
[maskLayer mask];
maskLayer.contents = [NSImage imageNamed:@"bg"];
[self.view.layer addSublayer:Layer];
[self.view.layer addSublayer:maskLayer];
[self maskLayerAnimation];
}
- (void) maskLayerAnimation {
[CATransaction begin];
CABasicAnimation* fadeAnim = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeAnim.fromValue = [NSNumber numberWithFloat:1.0];
fadeAnim.toValue = [NSNumber numberWithFloat:0.0];
fadeAnim.duration = 5.0;
[CATransaction setCompletionBlock:^{
NSLog(@"animation completed");
maskLayer.frame = CGRectMake(20, 20, 720, 700);
maskLayer.contents = [NSImage imageNamed:@"bg2"];
}];;
[maskLayer addAnimation:fadeAnim forKey:@"opacity"];
[CATransaction commit];
}