4

これらの提案されたソリューションを使用して、UINavigationBar にカスタム イメージを提供しました。(より明確にするために: AppDelegate.m ファイルの UINavigationBar にカテゴリを追加しました)。これは今のところ問題なく機能し、問題はありませんでした。ただし、最近の iOS5 ベータ版でアプリを実行していました。UINavigationBar は再び空白になります。

私がインストールした他のすべてのアプリは、カスタム イメージを使用しますが、同じように動作するため、コードに何か「間違った」ものがあるに違いありません。iOS5 はサポートされなくなりました。

では、上記のソリューションを採用する際に何が問題になる可能性があるか、誰にもわかりませんか?

それを機能させる唯一の方法は、UINavigationBar の実際のサブクラスを作成し、すべてのビューで IB にそのカスタム クラスを使用するように指示することでした。エレガントじゃないけど…

4

4 に答える 4

4

両方のバージョンをサポートするには、setBackgroundImage:forBarMetrics: メソッドがあるかどうかを確認する必要があります。

それについての私のブログ投稿を見てください: http://www.mladjanantic.com/setting-custom-background-for-uinavigationbar-what-will-work-on-ios5-and-ios4-too/

于 2011-10-15T19:49:45.753 に答える
1

もう1つの可能な「ハック」ソリューションは、カスタムビューを作成し、それをサブビューとして UINavigationBar に挿入することです-それでも機能する可能性があります:

UIView *backgroundView = ...
[navigationBar insertSubview:backgroundView atIndex:0];

または、カスタム背景を設定する組み込みメソッドについては、iOS5 ドキュメントの更新された UINavigationBar クラス リファレンスを確認してください。

于 2011-06-14T09:32:36.453 に答える
1

このコードを使用

        UIImage *backgroundImage = [UIImage imageNamed:@"strip.png"];
        [upnavbar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];

これはうまくいきます。

于 2013-03-16T07:35:35.270 に答える
0

これは私のツールバーで私のために働いた

//toolBar background image set based on iOS version
    [[UIDevice currentDevice] systemVersion];

    if ([[[UIDevice currentDevice] systemVersion] floatValue] > 4.9) {

        //iOS 5
        UIImage *toolBarIMG = [UIImage imageNamed: @"toolBar_brown.png"];  

        if ([toolBar respondsToSelector:@selector(setBackgroundImage:forToolbarPosition:barMetrics:)]) { 
            [toolBar setBackgroundImage:toolBarIMG forToolbarPosition:0 barMetrics:0]; 
        }

    } else {

        //iOS 4
        [toolBar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"toolBar_brown.png"]] autorelease] atIndex:0]; 

    }
于 2011-10-15T22:53:04.083 に答える