Objective c iOS 7状态栏背景
我有一些顶部有工具栏的视图控制器,看起来像这样Objective c iOS 7状态栏背景,objective-c,cocoa-touch,ios7,Objective C,Cocoa Touch,Ios7,我有一些顶部有工具栏的视图控制器,看起来像这样 如何填充状态栏背景以匹配工具栏背景,使其与新的iOS 7样式匹配?您需要在app delegate中添加子视图,并根据自己的喜好更改颜色。下面是位于ApplicationIDFinishLaunchingWithOptions - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
如何填充状态栏背景以匹配工具栏背景,使其与新的iOS 7样式匹配?您需要在app delegate中添加子视图,并根据自己的喜好更改颜色。下面是位于
ApplicationIDFinishLaunchingWithOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// Override point for customization after application launch.
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
UIView *addStatusBar = [[UIView alloc] init];
addStatusBar.frame = CGRectMake(0, 0, 320, 20);
//change this to match your navigation bar or view color or tool bar
//You can also use addStatusBar.backgroundColor = [UIColor BlueColor]; or any other color
addStatusBar.backgroundColor = [UIColor colorWithRed:0.973/255. green:0.973/255. blue:0.973/255. alpha:1];
[self.window.rootViewController.view addSubview:addStatusBar];
}
return YES;
}
看看评论。您可以在addStatusBar.backGroundColor
中使用任何类型的颜色来匹配所需的颜色。请注意,这里的红色只是产生一个黑色背景,请根据需要进行更改。对于深灰色,将其替换为以下代码:
addStatusBar.backgroundColor = [UIColor colorWithRed:85.0/255.0 green:85.0/255.0 blue:85.0/255.0 alpha:1];
编辑:
要更改各个视图中的状态栏颜色,只需在[super viewdiload]之后插入viewdiload
方法中的以下代码(该代码将访问要更改的视图)
将更改您放置代码所在视图中状态栏的颜色
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/255. green:0.973/255. blue:0.973/255. alpha:1];
[self.view addSubview:addStatusBar];
编辑1:
如果试图在导航控制器的导航栏顶部添加子视图,则必须将子视图的位置增加两倍,如下所示:
UIView *addStatusBar = [[UIView alloc] init];
addStatusBar.frame = CGRectMake(0, -20, 320, 20);
addStatusBar.backgroundColor = [UIColor colorWithRed:127.0/255. green:0.0/255. blue:127.0/255. alpha:1];
[self.view addSubview:addStatusBar];
[self.navigationController.navigationBar addSubview:addStatusBar];
此外,还需要将子视图添加到导航控制器导航栏的子视图中。我将子视图的背景颜色设置为紫色,但您可以更改它。您需要在app delegate中添加子视图,并根据自己的喜好更改颜色。下面是位于
ApplicationIDFinishLaunchingWithOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// Override point for customization after application launch.
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
UIView *addStatusBar = [[UIView alloc] init];
addStatusBar.frame = CGRectMake(0, 0, 320, 20);
//change this to match your navigation bar or view color or tool bar
//You can also use addStatusBar.backgroundColor = [UIColor BlueColor]; or any other color
addStatusBar.backgroundColor = [UIColor colorWithRed:0.973/255. green:0.973/255. blue:0.973/255. alpha:1];
[self.window.rootViewController.view addSubview:addStatusBar];
}
return YES;
}
看看评论。您可以在addStatusBar.backGroundColor
中使用任何类型的颜色来匹配所需的颜色。请注意,这里的红色只是产生一个黑色背景,请根据需要进行更改。对于深灰色,将其替换为以下代码:
addStatusBar.backgroundColor = [UIColor colorWithRed:85.0/255.0 green:85.0/255.0 blue:85.0/255.0 alpha:1];
编辑:
要更改各个视图中的状态栏颜色,只需在[super viewdiload]之后插入viewdiload
方法中的以下代码(该代码将访问要更改的视图)
将更改您放置代码所在视图中状态栏的颜色
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/255. green:0.973/255. blue:0.973/255. alpha:1];
[self.view addSubview:addStatusBar];
编辑1:
如果试图在导航控制器的导航栏顶部添加子视图,则必须将子视图的位置增加两倍,如下所示:
UIView *addStatusBar = [[UIView alloc] init];
addStatusBar.frame = CGRectMake(0, -20, 320, 20);
addStatusBar.backgroundColor = [UIColor colorWithRed:127.0/255. green:0.0/255. blue:127.0/255. alpha:1];
[self.view addSubview:addStatusBar];
[self.navigationController.navigationBar addSubview:addStatusBar];
此外,还需要将子视图添加到导航控制器导航栏的子视图中。我将子视图的背景色设置为紫色,但您可以更改它。这仅适用于rootViewController。对于所有视图控制器,在应用程序级别进行设置怎么样?@user623396,对于设置状态栏的颜色,(通过这种方式,还有其他方法进行设置)我只是在状态栏顶部添加一个子视图,其中包含坐标和大小。它在视图控制器级别也可以工作,但是您必须访问视图而不是根视图控制器。如果您想更改不同视图中状态栏的颜色,使其具有不同的状态栏颜色,则可能会出现这种情况。我已经修改了相同的代码,以便在后期编辑中在视图控制器级别工作。如果这是您想要的或需要更多帮助,请告诉我。@XCode\u Monkey谢谢您的回复。问题是,事实上,添加这样的视图会将其放置在导航栏下,而不是屏幕顶部。因此,您使用的是导航控制器。正在尝试设置与导航栏不同的状态栏颜色吗?完全正确。我做到这一点的唯一方法是在导航栏上设置背景图像。使用所需颜色绘制的前20个(或视网膜上的40个)像素。但这不是最灵活的解决方案。这仅适用于rootViewController。对于所有视图控制器,在应用程序级别进行设置怎么样?@user623396,对于设置状态栏的颜色,(通过这种方式,还有其他方法进行设置)我只是在状态栏顶部添加一个子视图,其中包含坐标和大小。它在视图控制器级别也可以工作,但是您必须访问视图而不是根视图控制器。如果您想更改不同视图中状态栏的颜色,使其具有不同的状态栏颜色,则可能会出现这种情况。我已经修改了相同的代码,以便在后期编辑中在视图控制器级别工作。如果这是您想要的或需要更多帮助,请告诉我。@XCode\u Monkey谢谢您的回复。问题是,事实上,添加这样的视图会将其放置在导航栏下,而不是屏幕顶部。因此,您使用的是导航控制器。正在尝试设置与导航栏不同的状态栏颜色吗?完全正确。我做到这一点的唯一方法是在导航栏上设置背景图像。使用所需颜色绘制的前20个(或视网膜上的40个)像素。但这不是最灵活的解决方案。