ios - 实例成员已声明时不能使用

标签 ios swift swift3

我在扩展名中声明 UIColors:UIColor 文件,但当我已经在扩展文件中声明它时,我不断收到类似“实例成员‘red’不能用于类型‘UIColor’”的错误。我将列出一张图片错误和下面的代码。

Error image

扩展 UIColor 文件

import Foundation
import UIKit

  extension UIColor {

var red: CGFloat {
    get {
        let components = self.cgColor.components
        return components![0]
    }
}

var green: CGFloat {
    get {
        let components = self.cgColor.components
        return components![1]
    }
}

var blue: CGFloat {
    get {
        let components = self.cgColor.components
        return components![2]
    }
}

var alpha: CGFloat {
    get {
        return self.cgColor.alpha
    }
}

func alpha(_ alpha: CGFloat) -> UIColor {
    return UIColor(red: self.red, green: self.green, blue: self.blue, alpha: alpha)
}

func white(_ scale: CGFloat) -> UIColor {
    return UIColor(
        red: self.red + (1.0 - self.red) * scale,
        green: self.green + (1.0 - self.green) * scale,
        blue: self.blue + (1.0 - self.blue) * scale,
        alpha: 1.0
    )
}
 }

我想在其中使用其中一种颜色的 Swift 文件。

var color: UIColor = UIColor.red {
    didSet {
        setup()
    }
}

最佳答案

您在扩展中添加的 redgreenblue 属性名称与同名的类变量冲突。重命名扩展中的属性。

仅供引用 - 您的扩展中不需要 alpha 方法。 UIColor 已经提供了相同的方法(名为 withAlphaComponent)。

redgreenblue 的实现可能会崩溃。您假设 CGColor 总是有 3 个分量,并且您假设它是 RGB 颜色。两种情况都不总是正确的。

关于ios - 实例成员已声明时不能使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41559409/

相关文章:

c++ - OpenCV IOS swift 2 :How to implement the CvVideoCameraDelegate protocol process Video Frames

ios - 如何正确测试游戏中心成就

ios - Facebook SDK iOS 的自定义分享、登录按钮

ios - 从 InterfaceBuilder 和通过代码设置时获得不同的颜色

ios - 验证手机号码phonegap应用程序

ios - 如何在 iOS 中正确实现视频库

ios - Swift 自定义 UIViewController 的标签为 nil

swift - MIDIThruConnectionCreate 总是通过连接创建持久的 MIDI?

iOS Swift 3 - 参数标签 '(of:)' 不匹配任何可用的重载错误

ios - Swift/iOS 等同于 Android 中的微调器?