iOS7导航栏半透明= NO

时间:2014-02-12 16:55:43

标签: ios objective-c uinavigationbar

我有一个背景图片,所有视图中的图像相同,但导航条traslucent默认设置为YES,背景不均匀。我尝试了各种解决方案,但没有任何改变:(

我的AppDelegate.h

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

我的AppDelegate.m

#import "AppDelegate.h"

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >>16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.

[[UINavigationBar appearance] setBarTintColor: UIColorFromRGB(0x45312a)];
[[UINavigationBar appearance] setTintColor: [UIColor whiteColor]];

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7) {
    self.navigationController.navigationBar.translucent = NO;
}

return YES;
}

但是在行中:

self.navigationController.navigationBar.translucent = NO;

给我这些错误:在'AppDelegate *'类型的对象上找不到属性'navigationController'

任何人都可以帮助我吗?谢谢!

3 个答案:

答案 0 :(得分:13)

您可以在根视图控制器中执行此操作

//inside the root view controller
- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.navigationController.navigationBar setTranslucent:NO];
}

您还可以在界面构建器中切换半透明。选择导航控制器,然后在文档大纲中选择导航栏,只需在属性检查器

中进行更改

Attributes Inspector Navigation Bar

答案 1 :(得分:2)

因为AppDelegate不是导航控制器。您可以在之前的行中执行的操作是全局设置导航栏外观。

[[UINavigationBar appearance] setTranslucent:NO];

答案 2 :(得分:-2)

尝试使用ios 7

     [self.navigationController.navigationBar setBarTintColor:[UIColor whiteColor]];