iOS 2不同导航条图像

iOS 2不同导航条图像,ios,uiimagepickercontroller,Ios,Uiimagepickercontroller,我已使用以下代码替换了Xcode 5中iOS7应用程序中的导航栏(如果有必要,还删除了状态栏): AppDelegate.M [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navBar"] forBarMetrics:UIBarMetricsDefault]; 在我的一个图像视图控制器中,我使用一个UIImagePicker来拾取一个剖面图。问题是,当它进入照片库时,它使用了主“导航栏”图像,该图像

我已使用以下代码替换了Xcode 5中iOS7应用程序中的导航栏(如果有必要,还删除了状态栏):

AppDelegate.M

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navBar"] forBarMetrics:UIBarMetricsDefault];
在我的一个图像视图控制器中,我使用一个UIImagePicker来拾取一个剖面图。问题是,当它进入照片库时,它使用了主“导航栏”图像,该图像隐藏了一些控件,并且基本上在顶部堆叠了2个相同的导航栏。我可以为照片库换一个导航条吗?以下是视图控制器:

第一视图

#import <UIKit/UIKit.h>

@interface IBFirstViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>


@property (weak, nonatomic) IBOutlet UILabel *userName;
@property (weak, nonatomic) IBOutlet UILabel *userEmail;
@property (weak, nonatomic) IBOutlet UIImageView *backgroundImage;


- (IBAction)logout:(id)sender;
- (IBAction)edit:(id)sender;

在iOS7上使用
[UINavigationBar外观]
自定义导航栏时,我遇到了类似的问题。如果我们这样做,作为
UINavigationController
子类的所有iOS本机控制器也会受到影响,例如:
UIImagePickerController、MFMessageComposeViewController

如果要在控制器中使用自定义导航样式,则必须应用
UINavigationController
实例,而不是使用
[UINavigationBar外观]
singleton

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
     ... 
     UINavigationController *navigationController = (UINavigationController*)self.window.rootViewController;
     [navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navBar"] forBarMetrics:UIBarMetricsDefault];
     ...
}
或者在我的例子中,我创建UINavigationController的子类

 - (void)viewDidLoad
{
    [super viewDidLoad];
    [self setupAppearance];
...
}

- (void)setupAppearance
{
    [self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navBar"]
}
然后,在创建UIImagePickerController实例时,只需自定义其导航栏

- (IBAction)edit:(id)sender {
    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc]init];
    imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext;
    imagePickerController.delegate = self;

    // Custom another navigation style
    [imagePickerController.navigationBar setBackgroundImage:[UIImage imageNamed:@"NEW-NAV-BAR-IMAGE"];

    [self presentViewController:imagePickerController animated:NO completion:Nil];
}
- (IBAction)edit:(id)sender {
    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc]init];
    imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext;
    imagePickerController.delegate = self;

    // Custom another navigation style
    [imagePickerController.navigationBar setBackgroundImage:[UIImage imageNamed:@"NEW-NAV-BAR-IMAGE"];

    [self presentViewController:imagePickerController animated:NO completion:Nil];
}