我正在我的应用程序中创建自定义元素,并希望匹配新 iOS 的外观和感觉。iOS 7 向我们介绍了一种非常常见的浅蓝色,这是几个元素的默认颜色或色调,包括系统按钮、分段控件等。它们使使用 IB 选择颜色变得容易,如下所示:
但是,我还没有找到如何以编程方式轻松访问颜色。我检查了UIColor 文档,并且类本身似乎没有任何蓝色系统颜色的访问器。
这是我的问题:这种颜色是否存在简单的访问器?[UIColor ?]
或类似的东西?如果没有,有人知道该颜色的确切RGB 值吗?
我正在我的应用程序中创建自定义元素,并希望匹配新 iOS 的外观和感觉。iOS 7 向我们介绍了一种非常常见的浅蓝色,这是几个元素的默认颜色或色调,包括系统按钮、分段控件等。它们使使用 IB 选择颜色变得容易,如下所示:
但是,我还没有找到如何以编程方式轻松访问颜色。我检查了UIColor 文档,并且类本身似乎没有任何蓝色系统颜色的访问器。
这是我的问题:这种颜色是否存在简单的访问器?[UIColor ?]
或类似的东西?如果没有,有人知道该颜色的确切RGB 值吗?
从self.view.tintColor
视图控制器或子类中使用。self.tintColor
UIView
它似乎是[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!
}
具有预定义系统颜色的本机扩展提供了您正在寻找的内容:
// System colors
extension UIColor {
/* Some colors that are used by system elements and applications.
* These return named colors whose values may vary between different contexts and releases.
* Do not make assumptions about the color spaces or actual colors used.
*/
...
@available(iOS 7.0, *)
open class var systemBlue: UIColor { get }
...
}
您可以直接使用它:
myView.tintColor = .systemBlue
使用以下代码自动获取颜色:
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
从 iOS 7 开始,有一个 API,您可以通过以下方式获取(和设置)色调:
self.view.tintColor
或者,如果您需要 CGColor:
self.view.tintColor.CGColor
在许多情况下,您需要的只是
[self tintColor]
// or if in a ViewController
[self.view tintColor]
或迅速
self.tintColor
// or if in a ViewController
self.view.tintColor
请不要混淆view.tintColor
或扩展,而只需使用这个:
UIColor.systemBlue
在设置颜色时,您可以像这样设置颜色
[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];