我正在将我的应用程序迁移到iOS 7。为了处理状态栏问题,我添加了以下代码
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f)
{
CGRect frame = self.navigationController.view.frame;
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
frame.origin.y = 20;
}
else
{
frame.origin.x = 20;
}
[self.navigationController.view setFrame:frame];
}
这在正常情况下工作正常。如果我正在更改方向(应用程序仅支持横向方向)或显示任何视图控制器并取消模型视图控制器,则我的视图控制器对齐方式将更改。状态栏再次与我的视图控制器重叠。这段代码根本不起作用。请指导我解决此状态栏问题。
案例2:这就是我展示视图控制器的方式
ZBarReaderViewController *reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
reader.supportedOrientationsMask = ZBarOrientationMaskLandscape;
else
reader.supportedOrientationsMask = ZBarOrientationMaskPortrait;
[self presentModalViewController:reader animated:YES];
裁判:
提前谢谢。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
self.window.rootViewController = self.viewController;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
[application setStatusBarStyle:UIStatusBarStyleLightContent];
[application setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
self.window.clipsToBounds =YES;
self.window.frame =CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}
[self.window makeKeyAndVisible];
return YES;
}
将以下内容设置为info.plist
基于视图控制器的状态栏外观=否;
我回答这个问题已经晚了,但我只想分享我所做的,这基本上是最简单的解决方案
首先呢-
现在,它来了:-
在AppDelegate.m中添加此代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//Whatever your code goes here
if(kDeviceiPad){
//adding status bar for IOS7 ipad
if (IS_IOS7) {
UIView *addStatusBar = [[UIView alloc] init];
addStatusBar.frame = CGRectMake(0, 0, 1024, 20);
addStatusBar.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1]; //change this to match your navigation bar
[self.window.rootViewController.view addSubview:addStatusBar];
}
}
else{
//adding status bar for IOS7 iphone
if (IS_IOS7) {
UIView *addStatusBar = [[UIView alloc] init];
addStatusBar.frame = CGRectMake(0, 0, 320, 20);
addStatusBar.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1]; //You can give your own color pattern
[self.window.rootViewController.view addSubview:addStatusBar];
}
return YES;
}
修复IOS 7中的状态栏问题
最后,我使用xcode5中的delta-value属性修复了状态栏重叠问题。首先,我将origin-y 20pxl增加到Xib中使用的所有控制器(它仅在IOS 7中工作正常),然后我将所有视图控制器origin-y的增量值设置为-20,它在IOS 6和IOS 7中工作正常。
这样做的步骤。
Xcode 5提供预览选项,根据操作系统版本在不同视图中查看xib的外观。
从助手编辑器中选择预览选项
单击“助理编辑器”
并选择“预览”选项以在不同版本中预览选定的视图控制器。
视图控制器视图预览选项。
在“预览”中,可以找到切换选项以预览不同版本的视图。在预览中,如果没有通过切换版本正确修复状态栏问题,您可以清楚地感觉到状态栏问题。
解决状态栏问题的三个步骤:步骤1:确保在文件检查器中查看目标为我们7.0及更高版本。
第2步:为视图控制器中添加的所有控件增加20个像素(正好是状态栏的大小)。
步骤3:为所有控件将原点y的增量值设置为-20,然后只有它会根据版本自动调整。现在使用预览,感受控件因增量值而自动调整的差异。
状态栏问题修复后,显示模型视图(ZBARDK控制器)时的问题也会自动修复。
预览屏幕:
(如果需要的话,请查看其他编辑,而不是有一个过长的问题,需要编辑才能进行最终编辑以进行澄清)。 我有一个应用程序,其设置如下: 初始化视图控制器(ECSlidingViewController的子类) 主导航控制器(UINavigationController的子类) 主主主视图控制器(UIViewController的子类 在初始视图控制器的中,我加载主导航控制器,主视图控制器作为其根。 这就是
只有在第一次打开应用程序时,半透明的状态栏才会出现问题。请看屏幕截图: http://i1335.photobucket.com/albums/w673/ductruongcntt/Screenshot_2014-06-26-14-17-26_zps1e9a56f4.png 以下是我使用的样式的XML,其中包括半透明状态栏: 我的主题是:
我想制作一个完全透明的状态栏和导航栏,就像Google Play那样。当我使用窗口设置来实现它时,键盘会覆盖编辑文本。 当此代码使用键盘输入覆盖的编辑文本时: 此外,该代码并没有使其完全透明,它只是使其半透明 还是这个
我正在构建一个iOS网络应用程序。自从升级到iOS 7后,我注意到状态栏有很多问题。我想让状态栏显示为带黑色文本/图标的白色,但我似乎无法理解。 我尝试过的meta标签有: 只显示一个空的黑条,并向下移动内容: 显示带有白色文本/图标的黑色条: 显示带有白色文本/图标的白色条: 关于我做错了什么,或者如何让状态栏显示为带黑色文本的白色背景,有什么想法吗?
我在试着做一个Android发射器。我想实现一个完全透明的状态栏和导航栏,这里是我的主题xml文件。 最后两项不管用,Lollipop上还有影子。 我想实现的(新星发射器): 如何让状态栏和导航栏“透明”而不是“半透明”?
我的应用程序中有一个视图控制器,它在情节提要中拖动了一个导航栏。它在iOS 6中运行良好,但在iOS 7中看起来是这样的: 状态栏和导航栏不应相互碰撞。我在堆栈溢出上看到了很多这样的问题,但它们对我没有多大帮助。 有些问题说我应该使用这个“self.edgesForExtendedLayout=UIRectEdgeNone”;但它不起作用。有人说,我应该删除导航栏并将其嵌入导航控制器中,但由于我的