Animasyonu nereye yerleştireceğinizden emin değilim çünkü resmi tam olarak nasıl yakaladığınızı bilmiyorum (belki de kodu gönderebilirsiniz), ancak ekranın beyaza yanıp sönmesi için bir animasyonun kodu:
//Header (.h) file
@property (nonatomic, strong) UIView *whiteScreen;
//Implementation (.m) file
@synthesize whiteScreen;
- (void)viewDidLoad {
self.whiteScreen = [[UIView alloc] initWithFrame:self.view.frame];
self.whiteScreen.layer.opacity = 0.0f;
self.whiteScreen.layer.backgroundColor = [[UIColor whiteColor] CGColor];
[self.view addSubview:self.whiteScreen];
}
-(void)flashScreen {
CAKeyframeAnimation *opacityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
NSArray *animationValues = @[ @0.8f, @0.0f ];
NSArray *animationTimes = @[ @0.3f, @1.0f ];
id timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
NSArray *animationTimingFunctions = @[ timingFunction, timingFunction ];
[opacityAnimation setValues:animationValues];
[opacityAnimation setKeyTimes:animationTimes];
[opacityAnimation setTimingFunctions:animationTimingFunctions];
opacityAnimation.fillMode = kCAFillModeForwards;
opacityAnimation.removedOnCompletion = YES;
opacityAnimation.duration = 0.4;
[self.whiteScreen.layer addAnimation:opacityAnimation forKey:@"animation"];
}
Ayrıca, fadeout süresini nasıl kontrol edeceğinizi de sordunuz. animationTimes
dizisindeki değerleri ayarlayarak bunu yapabilirsiniz. CAKeyframeAnimations
'un nasıl çalıştığını bilmiyorsanız, işte size kısa bir brifere. Animasyonun toplam süresi opacityAnimation.duration = 0.4
tarafından kontrol edilir. Bu, animasyonu 0,4 saniye uzunluğunda yapar. Şimdi ne animationTimes
ne yapar. Dizideki her bir değer, 0.0 ile 1.0 arasında bir sayıdır ve 'animationValues' dizisindeki bir öğeye karşılık gelir. Zaman dizisindeki değer, animasyonun toplam süresinin bir kısmı olarak karşılık gelen anahtar kare değerinin süresini tanımlar.
Örneğin, yukarıdaki animasyonda, zaman dizisi 0,8 ve 0,0 değerlerine karşılık gelen 0,3 ve 1,0 değerlerini içerir. toplam süresi 0.4, bu nedenle bu 0.0'da başlangıçta opaklık whiteScreen görünüşüdür, 0.8 opaklık yükseltmek
0.4 * 0.3 = 0.12 seconds.
alır demektir. İkinci değer, 0.0, tabakanın tekrar şeffaf olmasını sağlar. Bu, kalan süreyi (0.4 - 0.12 = 0.28 saniye) alır.