2012-07-31 25 views
6

Kullanıcıya bir fotoğrafın çekildiğini göstermek için (sadece işitsel bir ipucunun yanı sıra) kameranın yakalandığı andaki ekran ışığını yakıp söndürmek istiyorum.Fotoğraf makinesinin çekildiği anda beyaz ekran yanıp sönüyor mu?

Böyle bir animasyon nereye yerleştirilir? Ayrıca, fadeoutun süresini kontrol edebileceğim şekilde nasıl uygulanacak?

Not: Belirli bir kamera seçicisi için özel bir yer paylaşımı oluşturdum.

Bir resmin çekildiğini belirten herhangi bir şey benim aradığım şey.

cevap

9

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.

İlgili konular