使用UIColor ios的两个初始化函数

时间:2017-03-21 13:21:37

标签: ios iphone swift uicolor

我在标签上涂上颜色,发现我们有两个功能做同样的事情。 谁能解释一下这两个函数需要什么,为什么我们不能只有一个函数呢?

通常使用: -

public init(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)

当我去UIColor课程时看到它: -

required public convenience init(colorLiteralRed red: Float, green: Float, blue: Float, alpha: Float)

这两个功能有优缺点吗?

另外,最好的方式是: -

  
      
  1. footerView.backgroundColor = UIColor(red: 178/255, green: 178/255, blue: 178/255, alpha: 1)

  2.   
  3. footerView.backgroundColor = UIColor(colorLiteralRed: 178/255, green: 178/255, blue: 178/255, alpha: 1)

  4.   
  5. footerView.backgroundColor = UIColor.init(colorLiteralRed: 178/255, green: 178/255, blue: 178/255, alpha: 1)

  6.   

3 个答案:

答案 0 :(得分:3)

便利初始化器用于颜色文字(如参数标签所示)。拖放颜色时,您可以在Xcode和Playgrounds中看到它。

我没有看到任何理由自己调用颜色文字初始化程序。相反,如果您想使用显示P3色彩空间,则最有可能使用选项1或UIColor(displayP3Red:green:blue:alpha:)

答案 1 :(得分:1)

您可能有一个UIColor扩展程序,它正在添加UIColor(colorLiteralRed:, green:, blue:, alpha:) init方法。标准UIKit方法是第一种方法。也许colorLiteralRed只需要178,178,178,而不是178 / 255,178 / 255,178 / 255? 这是错误的

修改

你是对的 - 我的猜测colorLiteralRed是支持Xcode中的新Color Literal语法。尝试在Xcode中输入此内容 - let color:UIColor = Color Literal并让自动填充功能弹出一个颜色选择器。如果您选择一种颜色,Xcode中将会有一个正方形的颜色。但是,源代码看起来像let color = #colorLiteral(red: 1.0, green: 0, blue: 0, alpha: 1)。虽然它没有记录,但我的猜测是你在这里调用的方法。

答案 2 :(得分:0)

第一种方法

init(colorLiteralRed:green:blue:alpha:)旨在与由开发工具管理的Color Literals一起使用。

第二种方法

init(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)旨在供iOS应用用于创建颜色。

两者在性能方面都是相同的。我们不应该使用init(colorLiteralRed:green:blue:alpha:),因为在Swift4中,apple已弃用此方法。