当前位置: 首页 > 面试题库 >

如何在Swift中访问UIColor的扩展?

闾丘炫明
2023-03-14
问题内容

我是新手,尝试快速创建UIColor类的扩展为

extension UIColor{

    func getCustomBlueColor() -> UIColor {
        return UIColor(red:0.043, green:0.576 ,blue:0.588 , alpha:1.00)   
    }

}

之后,我以以下方式访问该方法

btnShare.setTitleColor(UIColor.getCustomBlueColor(**UIColor**), forState: UIControlState.Normal)

我不知道该声明应作为参数传递给我。


问题答案:

您已经定义了一个 实例方法 ,这意味着您只能在一个UIColor实例上调用它:

let col = UIColor().getCustomBlueColor()
// or in your case:
btnShare.setTitleColor(UIColor().getCustomBlueColor(), forState: .Normal)

发生编译器错误“缺少参数”是因为 实例方法是Swift中的Curried
Function
,因此可以等效地称为

let col = UIColor.getCustomBlueColor(UIColor())()

(但这是一件奇怪的事情,我添加它只是为了解释错误消息的来源。)

但是,您真正想要的是 类型方法class func

extension UIColor{
    class func getCustomBlueColor() -> UIColor{
        return UIColor(red:0.043, green:0.576 ,blue:0.588 , alpha:1.00)
    }
}

被称为

let col = UIColor.getCustomBlueColor()
// or in your case:
btnShare.setTitleColor(UIColor.getCustomBlueColor(), forState: .Normal)

无需先创建UIColor实例。



 类似资料:
  • 问题内容: 我知道如何使用 prepareForSegue函数中的segues传递数据,但是我有一个TableViewCell,从那里有两个可能的segues到两个不同的ViewControllers(现在让我们说A,B)。在这里建议最好将segues连接到View控制器,而不是将tableCell本身连接​​,事实如此,效果很好。但是我想在单击单元格时将信息传递给第二个View控制器,因此如何访

  • 问题内容: 我想在Swift中获取UIColor的RGB值: 在Java中,我将按以下方式进行操作: 我应该如何获得这个价值? 问题答案: Java 返回一个表示默认sRGB颜色空间中颜色的整数(位24-31是alpha,16-23是红色,8-15是绿色,0-7是蓝色)。 没有这种方法,但是您可以定义自己的方法: 用法: 请注意,只有在“兼容RGB”的色彩空间(例如RGB,HSB或GrayScal

  • 问题内容: C和派生函数的入口点函数具有和(和)参数,但是Swift没有合适的参数:顶级代码只是代码,并且没有参数。 在Swift程序中,如何访问等价的? 问题答案: 进程 刚刚重命名为 CommandLine (自Swift 3.0 8月4日快照以来) (由于某些原因,变更日志中未提及)

  • 问题内容: 我的应用程序中有一个非常复杂的数据结构,需要对其进行操作。我试图跟踪玩家在他们的花园中有多少种错误。有十种错误,每种错误都有十种模式,每种模式都有十种颜色。所以可能有1000个独特的错误,我想追踪玩家每种类型的错误数量。嵌套的字典如下所示: 我没有使用此语法的任何错误或投诉。 当我想增加播放器的错误收集时,请执行以下操作: 我收到此错误: 字符串不能转换为’DictionaryInde

  • 我正在编写一个需要扩展文件的应用程序,我想确保它与Android Q兼容。看来提供的文档没有解决Android Q中的更改。在Android Q中,将无法使用,所以我们如何访问扩展文件?

  • 问题内容: 我正在制作绘图应用程序,我想通过枚举引用我的颜色。例如,每次我想要红色时,使用它会更干净,更方便,而不用键入值。但是,Swift的原始值枚举似乎并不接受UIColor作为类型。有没有办法用枚举或类似方法做到这一点? 问题答案: 我这样做(基本上使用结构作为名称空间): 您可以像这样使用它: 因此,您可以在自定义主题中使用红色。