0

現在のアプリケーションでナビゲーションコントローラーを使用していますが、iOS4とiOS5のナビゲーションコントローラーに問題があったため、iOS4と5の両方のコードを記述しようとしました

if([[UINavigationBar class] respondsToSelector:@selector(appearance)]) //iOS >=5.0
{
    [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}
else
{
    self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"header.png"].CGImage;
}

しかし、問題は、iOS 4バージョンでアプリを実行すると、ナビゲーションコントローラーが次のようになることです。ここに画像の説明を入力してください

私に提案してください。

4

2 に答える 2

2

長い検索の後で私は私を助けたこのコードを試しました。

「ImageViewController.h」をインポートします

@implementation UINavigationBar (CustomImage)

- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed:@"background.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end
implement this code in your .m file


@implementation ImageViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationController.navigationBar.tintColor = [UIColor blackColor];
    UIImageView *backGroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
    [self.navigationController.navigationBar insertSubview:backGroundView atIndex:0];
    [backGroundView release];
}

@end
于 2012-05-14T10:26:38.547 に答える
0
UINavigationController *navControl;

他の部分では、このようにしてみてください。

UINavigationBar *navBar = self.navControl.navigationBar;
   UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
            imgView.image = [UIImage imageNamed:@"header.png"];
            [navBar addSubview:imgView];
            [imgView release];
于 2012-05-14T11:14:20.600 に答える