如何以编程方式获取iOS 7默认蓝色?

Joe*_* H. 218 colors uicolor ios ios7

我正在我的应用程序中创建自定义元素,并希望匹配新iOS的外观和感觉.iOS 7向我们介绍了一种非常常见的浅蓝色,几种元素的默认颜色或色调,包括系统按钮,分段控制等.它们使用IB轻松选择颜色,如下所示:

在此输入图像描述

但是,我还没有找到如何以编程方式轻松访问颜色.我检查了UIColor文档,并且似乎没有任何类蓝色系统颜色的访问器本身.

这是我的问题:这种颜色是否存在简单的存取器?[UIColor ?]或类似的东西?如果没有,有人知道该颜色的确切RGB值吗?

Aar*_*ger 249

使用self.view.tintColor从一个视图控制器,或self.tintColor从一个UIView子类.

  • 我打算说你可以使用`UIView().tintColor`,但事实上你不能.不确定UIView在什么时候获得色调颜色设置...... (6认同)
  • `UIViewController.viewDidLoad()中的`self.view.tintColor`给出正确的蓝色. (2认同)

Gre*_*reg 233

它似乎是[UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0].

截图显示颜色窗口

  • 请注意如何使用它,因为它可能会在后续的iOS版本中发生变化. (17认同)
  • 是的,对任何可能发生变化的价值进行硬编码绝对不是一个好主意.特别是当有API来查询实际值时. (6认同)
  • 有趣的是,我系统上的默认蓝色显示为0:128:255(使用相同的工具).我想知道Apple最近是否改变了它? (2认同)

小智 90

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];
Run Code Online (Sandbox Code Playgroud)

  • 如果你更喜欢hex:`0x007aff` (51认同)
  • 在另一个系统中:#007AFF (4认同)
  • 这不是未来的证据 - 如果Apple更改默认色调颜色或让用户设置默认色调颜色,您的应用将无法获得正确的颜色. (3认同)
  • 在Swift中:让defaultTintColor = UIColor(红色:0.0,绿色:122/255,蓝色:1.0,alpha:1) (3认同)

Sco*_*ter 48

根据UIButton的文档:

在iOS v7.0中,UIView的所有子类都从基类派生tintColor的行为.有关更多信息,请参阅UIView级别的tintColor讨论.

假设您在获取默认值之前未更改tintColor,则可以使用:

self.view.tintColor
Run Code Online (Sandbox Code Playgroud)


Ric*_*ick 26

以下是获取默认系统色调颜色的简单方法:

+ (UIColor*)defaultSystemTintColor
{
   static UIColor* systemTintColor = nil;
   static dispatch_once_t onceToken;
   dispatch_once(&onceToken, ^{
      UIView* view = [[UIView alloc] init];
      systemTintColor = view.tintColor;
   });
   return systemTintColor;
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么假设只从主线程调用该方法?`dispatch_once`的开销非常低,如果检查常见情况则是单个. (6认同)
  • 来自快速测试的@AndreyTarantsov似乎工作正常.从UIVIew [文档](https://developer.apple.com/library/ios/documentation/uikit/reference/uiview_class/uiview/uiview.html):"对应用程序的用户界面的操作必须在主线程上进行.因此,您应该始终从在应用程序主线程中运行的代码调用UIView类的方法.唯一可能不是绝对必要的时间是创建视图对象本身但所有其他操作应该在主线程上进行. " (3认同)

Ego*_*yer 18

十六进制颜色代码

#007AFF
Run Code Online (Sandbox Code Playgroud)

你需要这个图书馆 https://github.com/thii/SwiftHEXColors

PS.iOS,Swift


Dmi*_*lov 16

迅捷4路:

extension UIColor {
  static let system = UIView().tintColor!
}
Run Code Online (Sandbox Code Playgroud)


Luk*_*ski 14

使用以下代码自动获取颜色:

static let DefaultButtonColor = UIButton(type: UIButtonType.System).titleColorForState(.Normal)!
Run Code Online (Sandbox Code Playgroud)


Sta*_*ski 12

此扩展为您提供本机系统蓝色.

extension UIColor {

    static var systemBlue: UIColor {
        return UIButton(type: .system).tintColor
    }

}
Run Code Online (Sandbox Code Playgroud)

用法:

myView.tintColor = .systemBlue
Run Code Online (Sandbox Code Playgroud)

UPD:由于记忆性能而使其静止,感谢DmitryKozlov指出这一点.


csc*_*530 10

这个UIWindow.tintColor方法在iOS8中对我不起作用(它仍然是黑色的),所以我必须这样做:

let b = UIButton.buttonWithType(UIButtonType.System) as UIButton
var color = b.titleColorForState(.Normal)
Run Code Online (Sandbox Code Playgroud)

这给了正确的蓝色色调 UIBarButtonItem


Cod*_*dio 7

从iOS 7开始,有一个API,您可以通过以下方式获取(并设置)色调颜色:

self.view.tintColor
Run Code Online (Sandbox Code Playgroud)

或者如果你需要CGColor:

self.view.tintColor.CGColor
Run Code Online (Sandbox Code Playgroud)


Ali*_*Ali 6

在许多情况下,你需要的只是

[self tintColor] 
// or if in a ViewController
[self.view tintColor]
Run Code Online (Sandbox Code Playgroud)

或快速

self.tintColor
// or if in a ViewController
self.view.tintColor
Run Code Online (Sandbox Code Playgroud)