标签: uistatusbar

旋转后UIImagePickerController的状态栏和布局问题

tl; dr:如果应用程序显示状态栏,则在拍照时旋转iPad时用户界面布局会中断.

我有一个应用程序,显示一个状态栏,应该拍摄照片UIImagePickerController.

我在带有Xcode 4.51的iPad 3,iOS 6上运行它

我注意到的第一个问题是,如果我没有通过隐藏状态栏

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
Run Code Online (Sandbox Code Playgroud)

在致电之前

[self presentViewController:imagePicker animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

然后UIImagePickerController将无法在屏幕上正确显示.状态栏的空间仍将被保留(但没有显示时间或电池信息等),结果是屏幕下端的控件将部分偏离屏幕.

所以,我添加了这条线

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
Run Code Online (Sandbox Code Playgroud)

在提出之前UIImagePickerController,第一个问题就解决了.

现在出现了第二个问题(由第一个问题的解决方案引起).当我提出的UIImagePickerController,旋转iPad和关闭(通过"取消"或"使用",无所谓),该处理器(无论是imagePickerControllerDidCancelimagePickerController:didFinishPickingMediaWithInfo:将被调用,在我再次显示状态栏,通过

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
Run Code Online (Sandbox Code Playgroud)

问题是现在状态栏显示,但应用程序的其余部分似乎不知道它再次出现在屏幕上.(我在"MainViewController"上的UIToolbar部分隐藏在状态栏后面.)有趣的是,如果我将iPad旋转到任何其他方向,则在动画结束后再次正确显示.

谁能给我任何关于如何解决这个问题的提示?(目前我最好的工作是在第一次有人拍照后隐藏状态栏,但那是次优的).也许对第一个问题有更好的解决方案,或者可能是解决这两个问题的方法.

更多信息:在UIImagePickerController激活时将iPad旋转到横向,这是我的MainViewController视图框架的框架:{{0,0},{1024,768}}(即在出现问题的情况下).当我一直以横向方向放置iPad时,这是UIImagePickerController被取消后的MainViewController的视图框架:{{0,0},{1024,748}}(这是没有问题的情况.)

提前感谢您的关注和努力!

uiimagepickercontroller autorotate ios uistatusbar

5
推荐指数
1
解决办法
3464
查看次数

切换状态栏时如何重新定位导航/工具栏?

环境: iOS 6/7,Xcode 5中的AutoLayout.


我知道要调整NavBar以容纳状态栏,我将NavBar的背景图像设置为64位高(参考:WWDC 2013视频讲座#214).

在此输入图像描述

有没有一种方便的方法来切换这个状态栏的存在,同时重新定位 NavBar向上冲洗容器视图(反之亦然)?

添加了关注:我需要同时使用iOS 6和7.
iOS 6具有可靠的状态栏.因此,我必须在iOS 7中更改NavBar的背景图像以自动容纳状态栏......或者
......我是否正确我只能将状态栏设置为OPAQUE以在iOS 6/7中具有相似的定位环境?

uistatusbar autolayout ios7 xcode5

5
推荐指数
1
解决办法
657
查看次数

如何在iOS 7中以编程方式将UIViewControllerBasedStatusBarAppearance更改为YES/NO?

我的应用程序背景较暗,但在iOS 7中,状态栏变得透明.所以我看不到任何东西,角落里只有绿色电池指示灯.如何将状态栏文本颜色更改为绿色或橙色,就像在主屏幕上一样?

我知道

  1. 在plist中设置UIViewControllerBasedStatusBarAppearancetoYES

  2. viewDidLoad做一个[self setNeedsStatusBarAppearanceUpdate];

  3. 添加以下方法:

    -(UIStatusBarStyle)preferredStatusBarStyle{ 
        return UIStatusBarStyleLightContent; 
    }
    
    Run Code Online (Sandbox Code Playgroud)

如何以UIViewControllerBasedStatusBarAppearance编程方式更改?

提前致谢...

iphone uistatusbar ios7

5
推荐指数
2
解决办法
1万
查看次数

UINavigationBar 隐藏在 statusBar 下

在某些UIViewControllerUINavigationBar隐藏在状态栏下。这是屏幕截图:

状态栏下的 <code>UINavigationBar</code>

但是当我更改View controller-based status bar appearanceYESthen 时UINavigationBar看起来很完美。这是屏幕截图:

<code>UIStatusBar</code> 中的黑色文本

但在这种情况下,textColorofstatus bar会从白色变为黑色。我想要状态栏的白色文本颜色,并UINavigationBar从状态栏中取消隐藏。有没有办法解决它(状态栏的白色和取消隐藏UINavigationBar)。

提前致谢!

objective-c uinavigationbar ios uistatusbar

5
推荐指数
1
解决办法
1099
查看次数

如何获得透明的状态栏,如下图所示?

在此处输入图片说明

我需要一个透明的状态栏,如下图所示。

我试过了

UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
    statusBar.backgroundColor = [UIColor clearColor];
}
Run Code Online (Sandbox Code Playgroud)

但这基本上给出了与UIStatusBarStyleLightContent相同的结果。

uinavigationbar uinavigationcontroller ios uistatusbar swift

5
推荐指数
1
解决办法
1938
查看次数

iphoneX不能调用preferredsStatusBarHidden

info.plist

<key>UIViewControllerBasedStatusBarAppearance</key>
    <true/>
Run Code Online (Sandbox Code Playgroud)

UIViewController

override var prefersStatusBarHidden: Bool{
        return true
   }
Run Code Online (Sandbox Code Playgroud)

当我使用6p时,可以,但是
iphoneX不能调用,并且StatusBar不隐藏

uistatusbar swift iphone-x

5
推荐指数
1
解决办法
670
查看次数

viewWillAppear上statusBarOrientation的值错误

我需要根据方向更改视图的图像背景.为此,我使用statusBarOrientation方法viewWillAppear:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    UIInterfaceOrientation currentOrientation = [[UIApplication sharedApplication] statusBarOrientation];
    if (UIInterfaceOrientationIsPortrait(currentOrientation)) {
        NSLog(@"PORTRAIT");
    } else if (UIInterfaceOrientationIsLandscape(currentOrientation)) {
        NSLog(@"LANDSCAPE");
    }   
}
Run Code Online (Sandbox Code Playgroud)

问题是控制台总是显示PORTRAIT,即使iPad处于横向模式.相同的代码viewDidAppear工作正常,但为时已晚,用户可以看到图像的变化.这让我觉得statusBarOrientation的正确状态仍然不可用viewWillAppear,但我已经读过其他一些问题,这段代码应该在那里工作.

viewwillappear uiinterfaceorientation ios uistatusbar

4
推荐指数
1
解决办法
5137
查看次数

使用UINavigationController进行iOS7自定义转换

我使用iOS7自定义过渡以模态方式呈现新的视图控制器.

新的视图控制器是导航控制器.

控制器从底部开始动画,而背景视图模糊.

我的问题是,新控制器上的导航栏虽然向上动画,但似乎允许状态栏,即它似乎高64点.当它到达最终位置并调用completeTransition时,它意识到不需要状态栏空间并快速回到44点.

有办法吗?

  • 最初通知导航控制器/顶视图控制器不需要状态栏.要么
  • 在动画之前调用completeTransition正在调用的任何方法,以便随后进行自动重新调整.

动画制作时:

动画时

动画完成:

动画完成

uinavigationcontroller ios uistatusbar ios7

4
推荐指数
1
解决办法
2996
查看次数

iOS 7如何将StatusBarStyle从DefaultContent设置为LightContent

我正在尝试使用UIView动画将状态栏样式从UIStatusBarStyleDefaultContent转换UIStatusBarStyleLightContent,但是,样式只是在没有淡入淡出动画的情况下切换.我认为使用以下方式设置样式会起作用:

[UIView animateWithDuration:1.0
                      delay:0.0
                    options:UIViewAnimationOptionCurveEaseInOut
                 animations:^{
                     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
                     [self.view layoutIfNeeded];
                 } completion:nil];
Run Code Online (Sandbox Code Playgroud)

我不知道如何得到我想要发生的事情.基本上,我的内容从黑暗变为浅,所以我需要更改状态栏颜色.默认情况下,它不能按我想要的方式工作.任何帮助深表感谢.

谢谢!

uiviewanimation ios uistatusbar ios7

4
推荐指数
1
解决办法
827
查看次数

Swift UIApplication.setStatusBarStyle不起作用

这是我在子类中的实现UIViewController:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false)
}
Run Code Online (Sandbox Code Playgroud)

我尝试将它放在AppDelegate初始化代码中(使用传入的UIApplication实例),但状态栏仍为黑色..

这是iOS 8的错误还是我做错了?

注意:我可能会通过讨论ios 8来破坏某人的法律.它是一个普遍的问题,当编译时也不适用于ios 7.

更新:仍然不起作用,即使Info.plist和代码中的值 - didFinishLaunchingWithOptions Nope仍然无法正常工作

ios uistatusbar swift ios8

4
推荐指数
2
解决办法
4738
查看次数