Tag: ios7 statusbar

UIViewController的偏好状态栏隐藏不工作

我试图让我的视图控制器之一的状态栏被隐藏(当模态显示)。 当我呈现视图控制器时,状态栏将被隐藏,然后被解散时返回。 我已经将下面的代码添加到呈现的视图控制器 – (BOOL)prefersStatusBarHidden { return YES; } 我还将Info.plist文件中的密钥设置为以下内容: <key>UIViewControllerBasedStatusBarAppearance</key> <true/> 根据我的理解,这应该是完成这项工作所需的一切。 我也使用自定义animation控制器来执行符合UIViewControllerAnimatedTransitioning协议的呈现。 在animateTransition:实现中,我试图手动调用prefersStatusBarHidden ,后面跟着setNeedsStatusBarAppearanceUpdate以确保调用正在进行,但状态栏仍然存在。 任何想法,为什么发生这将不胜感激。 我已经searchStackOverflow,但似乎没有人有这个问题,所有接受的答案指的是调用setNeedsStatusBarAppearanceUpdate ,我已经在做。 编辑 – 下面的代码现在似乎工作正常 – (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext { if (self.isPresenting) { UIView *containerView = [transitionContext containerView]; UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; toViewController.view.frame = containerView.frame; [containerView addSubview:toViewController.view]; // Ask the presented controller whether […]

使用自定义模式演示处理通话状态栏

问题 在通话过程中用UIViewControllerAnimatedTransitioning呈现UINavigationController (具有根视图控制器,已经自然按下了),我注意到了一些奇怪的行为。 如果在显示导航控制器后启用通话状态栏,则导航控制器将按预期方式切换其视图。 但是当通话结束时,控制器不会将其视图移回,在状态栏下留下20p的间隔。 如果在呈现控制器之前启用通话状态栏,则控制器根本不占用状态栏,导致44p高的导航栏的4p从40p状态栏下面窥视。 当通话结束时,控制器将其视图向下移动以适应正常的20p状态栏。 *注意:这是在模拟器上testing的,由于启用/禁用通话状态栏非常方便,但是testing人员在实际的手机上观察到了这种现象。 我的(部分)解决方法 如果状态栏是不正常的高度,我会在演示期间通过调整控制器的框架来解决问题: @interface CustomAnimationController : NSObject <UIViewControllerAnimatedTransitioning> @end @implementation CustomAnimationController – (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext { UIViewController *toController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; UIView *container = [transitionContext containerView]; CGRect frame = [transitionContext finalFrameForViewController:toController]; if (CGRectEqualToRect(frame, CGRectZero)) { // In my experience, the final frame is always a zero rect, so this is […]