簡體   English   中英

相機拍攝時閃光屏白色?

[英]Flash screen white at moment of camera capture?

我想在拍攝相機時立即閃爍(然后淡出)屏幕,以便向用戶提供已拍攝照片的指示(除了聽覺線索之外)。

這樣的動畫會放在哪里? 另外,如何實現我可以控制淡出的持續時間?

注意:我為我的特定相機選擇器創建了一個自定義疊加層。

任何表明照片被拍攝的東西都是我要找的東西。

我不知道你將動畫放在哪里,因為我不知道你是如何捕獲圖片的(也許你可以發布代碼),但這里是用於將屏幕閃爍白色的動畫代碼:

//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"];
}

您還詢問了如何控制淡出持續時間。 您可以通過調整animationTimes數組中的值來完成此操作。 如果您不熟悉CAKeyframeAnimations工作方式,那么請快速瀏覽一下。 動畫的總持續時間由opacityAnimation.duration = 0.4 這使得動畫長達0.4秒。 現在進入animationTimes作用。 數組中的每個值都是介於0.0和1.0之間的數字,並且對應於'animationValues'數組中的元素。 times數組中的值將相應關鍵幀值的持續時間定義為動畫總持續時間的一部分。

例如,在上面的動畫中,時間數組包含值0.3和1.0,它們對應於值0.8和0.0。 總持續時間為0.4,因此這意味着最初的不透明度為0.0的whiteScreen視圖占用

0.4 * 0.3 = 0.12 seconds.

將不透明度提高到0.8。 第二個值0.0使圖層再次變為透明。 這占用剩余的時間(0.4-0.12 = 0.28秒)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM