【问题标题】:UIStatusBarAnimationFade durationUIStatusBarAnimationFade 持续时间
【发布时间】:2012-06-21 14:58:53
【问题描述】:

我有一个应用程序,其中有一个按钮可以将屏幕淡化为黑色。我也想让状态栏变黑,所以我使用以下代码:

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

我可以设置淡入淡出的持续时间吗?如果这不可行,是否可以获得官方的淡入淡出持续时间(例如使用UIKeyboardAnimationDurationUserInfoKey 获取键盘滑动持续时间)。


好吧,我没有从任何人那里得到任何回报,但我认为我至少应该分享我的 hack。经过一些实验,我决定淡出是 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];
    }];
}

【问题讨论】:

    标签: objective-c ios cocoa-touch uistatusbar


    【解决方案1】:

    我遇到了同样的问题,我的值是 0.5 用于隐藏,0.2 用于显示导航栏和状态栏。 至少对于 iOS 6.1/iOS Simulator,这些值更符合现实。

    【讨论】:

      猜你喜欢
      • 2020-09-24
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 2012-03-06
      • 2011-04-24
      • 2016-05-11
      • 1970-01-01
      相关资源
      最近更新 更多