UIStatusBar setTranslucent:NO 避免下移内容
Posted
技术标签:
【中文标题】UIStatusBar setTranslucent:NO 避免下移内容【英文标题】:UIStatusBar setTranslucent:NO avoid moving content down 【发布时间】:2014-01-25 11:57:32 【问题描述】:我试图让我的UINavigationBar
和UIStatusBar
不透明并且没有任何半透明属性。我尝试使用[[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 避免下移内容的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationBar 元素太靠近 UIStatusBar [重复]
UIStatusBar样式与UINavigationBar一致