我怎样才能以编程方式获得iOS 7的默认蓝色?
我在我的应用程序中创build自定义元素,并希望匹配新的iOS的外观和感觉。 iOS 7向我们介绍了一种非常普通的浅蓝色,几种元素的默认颜色或色调,包括系统button,分段控制等等。它们使得使用IB来select颜色变得容易,如下所示:
但是,我还没有find如何以编程方式轻松访问颜色。 我检查了UIColor文档 ,似乎没有任何访问者在类本身的蓝色系统颜色。
这是我的问题:这个颜色有一个简单的存取器吗? [UIColor ?]
或类似的东西? 如果没有,有人知道这种颜色的确切的RGB值 ?
从视图控制器使用self.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; }
iOS8中的UIWindow.tintColor
方法不适合我(它仍然是黑色的),所以我必须这样做:
let b = UIButton.buttonWithType(UIButtonType.System) as UIButton var color = b.titleColorForState(.Normal)
这给了在UIBarButtonItem
看到的正确的蓝色色调
使用此代码自动获取颜色:
static let DefaultButtonColor = UIButton(type: UIButtonType.System).titleColorForState(.Normal)!
在许多情况下,你需要的只是
[self tintColor] // or if in a ViewController [self.view tintColor]
或迅速
self.tintColor // or if in a ViewController self.view.tintColor
从iOS 7有一个API,你可以得到(和设置)色调的颜色:
self.view.tintColor
或者如果您需要CGColor:
self.view.tintColor.CGColor
同时设置颜色可以像这样设置颜色
[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];
swift 3.0方式:
private var systemColor: UIColor = UIView().tintColor extension UIColor { static var system: UIColor { return systemColor } }