UIStatusBar setTranslucent:NO 避免下移内容

Posted

技术标签:

【中文标题】UIStatusBar setTranslucent:NO 避免下移内容【英文标题】:UIStatusBar setTranslucent:NO avoid moving content down 【发布时间】:2014-01-25 11:57:32 【问题描述】:

我试图让我的UINavigationBarUIStatusBar 不透明并且没有任何半透明属性。我尝试使用[[UINavigationBar appearance] setTranslucent:NO];,但这会将视图内容向下移动几个像素。我希望该内容位于UINavigationBar 之下。有没有简单的方法可以做到这一点?

【问题讨论】:

你使用自动布局吗? 不,我没有。我已经为我所有的 ViewControllers 禁用了它。 如果我理解你的话,你想在 ios7 上移下 statusBar 下的 viewController 吗? 是的。我希望内容能够在 UINavigationBar 下滚动。就像在 Facebook 和 Instagram 应用程序上一样。他们有不透明的导航栏。此外,我正在尝试实现与它们相同的导航栏移动(上/下)。 如果内容不透明,在导航栏下方放置内容有什么意义?您的内容略微向下移动的原因是为了使其全部可见。 【参考方案1】:

我在使用 [[UINavigationBar appearance] setTranslucent:NO]; 时遇到了同样的问题在 AppDelegate.m 上。什么对我有用:在不透明导航栏下的每个 ViewController 场景中设置“不透明条下”(见图)属性

【讨论】:

【参考方案2】:

尝试为您的 UIViewControllers 更改以下属性,以消除 iOS7 的像素偏移效果。

【讨论】:

【参考方案3】:

首先,不能使用UIAppearance 设置半透明属性。接下来,您的条形图是半透明还是不透明与像素位置的变化没有关系。

自定义导航栏的外观

在 iOS 7 中,导航栏的 tintColor 会影响后退指示器图像、按钮标题和按钮图像的颜色。 barTintColor 属性会影响条形本身的颜色。此外,导航栏默认是半透明的。关闭或打开半透明不会影响按钮,因为它们没有背景。

【讨论】:

这似乎是指导航栏本身的子视图。我说的是 UIViewController 的实际内容。当在导航栏上调用 setTranslucent:NO 方法时,内容会被下推大约 64 像素。【参考方案4】:

在我的 IOS 应用程序中,我需要在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 函数中执行以下操作

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) 
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    self.window.clipsToBounds =YES;
    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);

    //Added on 19th Sep 2013
    self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);

这里有更详细的讨论ios-7-status-bar-back-to-ios-6-style

【讨论】:

以上是关于UIStatusBar setTranslucent:NO 避免下移内容的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 UIStatusBar 隐藏和显示?

UINavigationBar 元素太靠近 UIStatusBar [重复]

UIStatusBar样式与UINavigationBar一致

在 UIStatusBar 上设置与 UINavigationBar 相同的背景颜色

iOS开发之状态栏UIStatusBar图标操作

UIStatusBar setTranslucent:NO 避免下移内容