Answers:
使用self.view.tintColor
从一个视图控制器,或self.tintColor
从一个UIView
子类。
UIWindow
或者它的根视图具有原始版本。视图从响应者链中较高的视图继承其色调颜色,但是在您的示例中,新视图没有超级视图。
self.view.tintColor
从内部UIViewController.viewDidLoad()
给出正确的蓝色。
看来是[UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0]
。
UIColor(red: 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];
0x007aff
根据UIButton的文档:
在iOS v7.0中,UIView的所有子类都从基类派生其tintColor的行为。有关更多信息,请参见UIView级别对tintColor的讨论。
假设您在获取默认值之前未更改tintColor,则可以使用:
self.view.tintColor
sharedApplication()
没有keyWindow
与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;
}
dispatch_once
非常低,并且在通常情况下仅需检查一次。
UIColor
。将其包装在中dispatch_once
可以安全地在任何线程上检索此颜色。同样,开销非常低。
快速4种方式:
extension UIColor {
static let system = UIView().tintColor!
}
此扩展为您提供本机系统蓝色。
extension UIColor {
static var systemBlue: UIColor {
return UIButton(type: .system).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 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
从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
设置颜色时,您可以像这样设置颜色
[UIColor colorWithRed:19/255.0 green:144/255.0 blue:255/255.0 alpha:1.0]
/255.0
用每个rgb
值写?
通过以下方式将类别添加到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];
blue
到red
的+ (instancetype)iOS7redColor;
UIView().tintColor
,但实际上您不能。不知道在什么时候UIView会获得色彩设置...