Gan*_*thy 57 uinavigationcontroller ipad ios ios7
我正在将我的应用程序迁移到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];
}
Run Code Online (Sandbox Code Playgroud)
这在正常情况下工作正常.如果我正在更改方向(应用程序仅支持横向方向)或呈现任何视图控制器并关闭模型视图控制器,我的视图控制器对齐方式已更改.状态栏再次与我的视图控制器重叠.这段代码根本不起作用.请指导我修复此状态栏问题.
案例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];
Run Code Online (Sandbox Code Playgroud)
参考:

提前致谢.
Gan*_*thy 132
修复了IOS 7中的状态栏问题
最后,我使用xcode5中的delta值属性修复了状态栏.首先我增加了原点 - 对于Xib中使用的所有控制器都是20pxl(它的接缝仅在IOS 7中正常工作),之后我将所有视图控制器原点的delta值设置为-y它工作正常在ios 6和IOS 7中.
这样做的步骤.
Xcode 5提供预览选项,可根据操作系统版本查看不同视图中xib的外观.
从助理编辑器中选择预览选项
点击助理编辑器

并选择预览选项以预览不同版本的所选视图控制器.
查看控制器视图预览选项.

在预览中,您可以找到切换选项以预览不同版本的视图.在预览中,如果通过切换版本未正确修复状态栏,则可以清楚地感觉到状态栏问题.
修复状态栏问题的三个步骤:
步骤1: 确保视图在文件检查器中以7.0及更高版本为目标.

步骤2:增加原点 - y为视图控制器中添加的所有控件的20像素(与状态栏的大小完全相同).
步骤3:将所有控件的原点y的delta值设置为-20,然后仅根据版本自动调整.现在使用预览,并感受控件因delta值而自动调整的差异.

状态栏问题解决后,在显示模型视图(ZbarSDk控制器)时发出的问题也会自动修复.
预览屏幕:

Viz*_*llx 15
我这个答案迟到了,但我只想分享我的所作所为,这基本上
是最简单的解决方案
首先 - >转到你的info.plist File并添加状态栏样式 - >透明黑色样式(0.5的Alpha)
现在,它来了: -
在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;
}
Run Code Online (Sandbox Code Playgroud)
- (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;
}
Run Code Online (Sandbox Code Playgroud)
将以下内容设置为info.plist
查看基于控制器的状态栏外观= NO;
| 归档时间: |
|
| 查看次数: |
75775 次 |
| 最近记录: |