0

StoryBoards で iOS 5.1 を使用しています。標準のページ カール ボタンの色合いを変更したいのですが、できないようです。

ボタンはView Controller上にあり、Navigation ControllerのプッシュされたView Controllerです。Navigation Controller の色合いを変更したため、ツールバーが推測されます。ツールバーが目的の色で表示されます。

私の viewDidLoad メソッドは次のとおりです。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // adjust the color of the curl button
    if (self.curlButton) {
        NSMutableArray * toolbarItems = [self.toolbarItems mutableCopy];
        [toolbarItems removeObject:self.curlButton];
        UIColor *barColor = self.navigationController.toolbar.tintColor;
        UIBarButtonItem *newPageCurl = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPageCurl target:self.curlButton.target action:self.curlButton.action];
        newPageCurl.tintColor = barColor;
        NSLog(@"%@", newPageCurl.tintColor);
        [toolbarItems addObject:newPageCurl];
        self.toolbarItems = toolbarItems;
    }
}

self.curlButtonInterface Builder で構成されたページ カール ボタンのアウトレットです。

私はすでに色合いを に設定しようとしましたがself.curlButton、これは最初は nil でしたが、うまくいきませんでした。ボタンは同じ青い色合いでした。

SOに関する回答のいくつかは、プログラムで新しいボタンを作成する必要があると言っています。これが私がここで試していることです。

barColorに正しい色が含まれていることを確認しました。行をコメントアウトするremoveObjectと、2 つのカール ボタンが正しく生成されましたが、どちらも青色でした。

NSLog は、newPageCurlボタンに正しい色合いが設定されていることを確認します。

viewDidAppearツールバーを最初に表示する必要がある場合に備えて、代わりにこれをすべて実行しようとしましたが、ボタンはまだ青で、新しい色合いを使用していませんでした。

4

1 に答える 1

0

iOS 5 以降では、外観セレクターを使用してこれを行うことができるはずです。

(編集、カールボタンに関して迷子になって申し訳ありません。外観または外観WhenContainedIn:カールボタン以外のすべてで機能するように見えます…他のシステムバーボタンアイテムでも。カールについて、あるユーザーは、UIBarButtonSystemItem PageCurlのソリューションは変更されないと言いましたツールバーの色は機能しましたが、テストしたところ、機能しませんでした。)

    if ([[UIBarButtonItem class] respondsToSelector:@selector(appearanceWhenContainedIn:)])
    {
        id barButtonAppearance
          = [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil];
        [barButtonAppearance setTintColor:self.navigationController.toolbar.tintColor];
        barButtonAppearance
          = [UIBarButtonItem appearanceWhenContainedIn:[UIToolBar class], nil];
        // you'll have to have toolbar already, or pick something like [UIColor chartreuseColor] or whatever
        [barButtonAppearance setTintColor:toolbar.tintColor];
    }
于 2012-07-16T21:37:36.170 に答える