25

コードでプロジェクトからグローバル色合いを取得する方法はありますか? 誤解を避けるために、ファイル インスペクターで設定できるグローバル ティント カラーを意味します。

4

6 に答える 6

32

簡単。

目標 C:

UIColor *tintColor = [[self view]tintColor];

迅速:

let tintColor = self.view.tintColor;

これにより、アプリで設定された tintColor が取得されます。変更すると、このプロパティが更新されます。これは、viewController またはそのサブクラスの内部にいて、このビューとウィンドウの間の superView で tintColor をオーバーライドしていないことを前提としています。

更新:ウィンドウに追加されていないビュー コントローラーの色合いを取得しようとしている場合、この色はウィンドウ オブジェクトから継承されるため、カスタムの色合いはありません。コメントでこれを指摘してくれた@ManuelWaに感謝します。

于 2014-05-01T20:26:42.367 に答える
32

アプリデリゲートでは、次の方法で設定できます

UIColor *globalTint = [[[UIApplication sharedApplication] delegate] window].tintColor;
于 2013-10-02T12:53:52.993 に答える
2
[UIApplication sharedApplication].delegate.window.rootViewController.view.tintColor

うまくいくようです。

于 2016-07-02T21:16:44.630 に答える
2

Max の答えは正しいですが、navigationController のウィンドウを取得する必要があることがわかりました。

self.navigationController.view.window.tintColor = [UIColor redColor];

ただし、 Storyboard から手動で tintColor を設定した場合、これは機能しないことに注意してください。ストーリーボードの値が使用されている場合は、それが使用されます。これについては、Apple にバグを報告しました。Storyboard から tintColor を設定したとしても、このコードは無視すべきではないと思います。

于 2013-10-05T02:23:27.060 に答える
1
[UIApplication sharedApplication].keyWindow.tintColor;
于 2016-09-09T08:00:03.523 に答える