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