私は自分のアプリでカスタム要素を作成していて、新しいiOSのルックアンドフィールに合わせたいと思っています。 iOS 7では、システムボタン、セグメント化されたコントロールなどを含む、非常に一般的な明るい青の色、デフォルトの色またはいくつかの要素の色合いが導入されました。
しかし、プログラムで簡単に色にアクセスする方法はわかりませんでした。私は UIColorのドキュメント をチェックしました、そしてクラス自体に青いシステムカラーのためのアクセサーがないようです。
これが私の質問です。この色にはシンプルなアクセサがありますか。 [UIColor ?]
またはそれに似たものそうでない場合、誰かがその色の正確なRGB値を知っていますか?
View Controllerからself.view.tintColor
を、またはUIView
サブクラスからself.tintColor
を使用してください。
それは[UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0]
のようです。
iOS 7のデフォルトの青色はR:0.0 G:122.0 B:255.0
です
UIColor *ios7BlueColor = [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0];
UIButtonのドキュメントによると、
IOS v7.0では、UIViewのすべてのサブクラスは基本クラスからtintColorの動作を継承しています。詳細については、UIViewレベルでのtintColorの説明を参照してください。
デフォルト値を取得する前にtintColorを変更しないと仮定すると、次のようになります。
self.view.tintColor
これは、デフォルトのシステムの色合いの色を取得する簡単な方法です。
+ (UIColor*)defaultSystemTintColor
{
static UIColor* systemTintColor = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
UIView* view = [[UIView alloc] init];
systemTintColor = view.tintColor;
});
return systemTintColor;
}
高速4ウェイ:
extension UIColor {
static let system = UIView().tintColor!
}
このコードを使用して色を自動的に取得します。
static let DefaultButtonColor = UIButton(type: UIButtonType.System).titleColorForState(.Normal)!
UIWindow.tintColor
メソッドはiOS8では私にとってはうまくいきませんでした(それはまだ黒だった)ので、私はこれをしなければなりませんでした:
let b = UIButton.buttonWithType(UIButtonType.System) as UIButton
var color = b.titleColorForState(.Normal)
これはUIBarButtonItem
で見られる適切な青い色合いを与えました
この拡張子はあなたにネイティブシステムの青い色を与えます。
extension UIColor {
static var systemBlue: UIColor {
return UIButton(type: .system).tintColor
}
}
使用法:
myView.tintColor = .systemBlue
UPD:それを指摘してくれたDmitryKozlovに感謝します。
IOS 7からAPIがあり、あなたはティントカラーを取得(そして設定)することができます:
self.view.tintColor
あるいはCGColorが必要ならば:
self.view.tintColor.CGColor
多くの場合、必要なのはただ
[self tintColor]
// or if in a ViewController
[self.view tintColor]
またはSwift用
self.tintColor
// or if in a ViewController
self.view.tintColor
色を設定しながら、あなたはこのように色を設定することができます
[UIColor colorWithRed:19/255.0 green:144/255.0 blue:255/255.0 alpha:1.0]
次の方法でUIColorにカテゴリを追加すると、必要に応じていつでもカテゴリを利用できるようになり、コード全体でその定義を変更することもできます。
@interface UIColor (iOS7Colors)
+ (instancetype)iOS7blueColor;
@end
@implementation UIColor (SpecialColors)
+ (instancetype)iOS7blueColor;
{
return [UIColor colorWithRed:0.0f green:0.22f blue:122.0/255.0 alpha:1.0f];
}
コードにカテゴリをインポートしたら、次のようにして色を呼び出すことができます。
UIColor *myBlueColor = [UIColor iOSblueColor];