4

画面を黒くフェードするボタンがあるアプリがあります。ステータスバーも黒くフェードさせたいので、次のコードを使用しています。

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

フェードの持続時間を設定することはできますか? それができない場合、公式のフェード期間を取得することは可能ですか (UIKeyboardAnimationDurationUserInfoKeyキーボード スライドの期間を取得するために使用するなど)。


誰からも何も得られませんでしたが、少なくとも私のハックを共有する必要があると思います。いくつかの実験の後、フェードアウトは 1 秒、フェードインは 0.25 秒に落ち着きました。

- (IBAction)fadeToBlack:(id)sender
{
    UIView *view = [[[UIView alloc] initWithFrame:self.view.window.frame] autorelease];
    view.backgroundColor = [UIColor blackColor];
    view.alpha = 0.0;
    [self.view.window addSubview:view];

    // NOTE: Fading the black view at the same rate as the status bar. Duration is just a guess.
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
    [UIView animateWithDuration:1.0 animations:^{
        view.alpha = 1.0;
    } completion:^(BOOL finished) {
        [view addGestureRecognizer:self.dismissViewGesture];
    }];
}

- (void)dismissViewWithGesture:(UIGestureRecognizer *)gesture
{
    UIView *view = gesture.view;
    [view removeGestureRecognizer:gesture];

    // NOTE: Fading the black view at the same rate as the status bar. Duration is just a guess.
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
    [UIView animateWithDuration:0.25 animations:^{
        view.alpha = 0.0;
    } completion:^(BOOL finished) {
        [view removeFromSuperview];
    }];
}
4

1 に答える 1

0

私は同じ問題を抱えていました。私の値は、非表示の場合は 0.5、ステータス バーと一緒にナビゲーション バーを表示する場合は 0.2 です。少なくとも iOS 6.1/iOS シミュレーターの場合、これらの値は現実にはるかによく一致しています。

于 2013-03-06T23:13:38.480 に答える