我在XIB
之前使用Status Bar
创建了一个没有iOS7
的应用,现在我需要在我的应用上添加Status bar
,而Status bar background color
应该与Navigation bar
背景色。所以我试过(在我的info.plist
):
1) Set View controller-based status bar appearance to NO
2) Set Status bar style to UIStatusBarStyleLightContent
这是我的App Delegate
代码:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
[[UINavigationBar appearance] setBarStyle:UIBarStyleDefault];
[[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithRed:(51/255.0) green:(51/255.0) blue:(51/255.0) alpha:1.0]];
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:(51/255.0) green:(51/255.0) blue:(51/255.0) alpha:1.0]];
所以我得到的输出如下图所示:
此外,我在屏幕上显示的UIButton错位(隐藏了20个像素)。
你能帮我解决一下我该如何解决这个问题?我需要输出如下图所示:
非常感谢任何帮助,谢谢。
第三屏:
答案 0 :(得分:1)
在viewDidLoad方法中添加以下代码:
float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
if (systemVersion >= 7.0)
{
self.edgesForExtendedLayout = UIRectEdgeNone;
}
答案 1 :(得分:1)
请在AppDelegate.h(或)constants.h
中定义 #define isIOS7 ([[[UIDevice currentDevice]systemVersion]floatValue] >=7.0)?YES:NO
在viewDidLoad下写下这一行。
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
UIView *addStatusBar = [[UIView alloc] init];
addStatusBar.frame = CGRectMake(0, 0, 320, 20);
addStatusBar.backgroundColor = [UIColor colorWithRed:0.973 green:0.973 blue:0.973 alpha:1];
//change this to match your navigation bar
[self.window.rootViewController.view addSubview:addStatusBar];
}
或者我们可以在xib中手动更改它。
将每个元素向下移动20px。
答案 2 :(得分:0)
很少有人建议这一点感到惊讶。这是正确的方法(没有黑客攻击)
首先,让你的navigationBar的Y原点为20.
然后在.h文件中,将ViewController设置为UIBarPositioningDelegate:
@interface XYZViewController : UIViewController <UIBarPositioningDelegate>
在.m文件中:
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationBar.delegate = self;
}
- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar {
return UIBarPositionTopAttached;
}