定义自定义颜色Swift

时间:2018-03-02 15:30:32

标签: swift extension-methods

我在Swift中重写我的应用程序(是的,万岁),我遇到了以下情况:

我继承了一个类,其定义是(.h)

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface MWColor : NSObject

+ (UIColor *)gray;
+ (UIColor *)green;
+ (UIColor *)themeColor;


@end

在这里,我定义颜色,我可以在整个项目中使用颜色:

myView.backgroundColor = MWColor.gray()

现在,我想以适当的Swift方式做到这一点。

最好的方法是什么?扩展?

帮助我成为一个好的斯威夫特公民

2 个答案:

答案 0 :(得分:5)

您可以在这样的扩展程序中将计算颜色添加到UIColor ...

extension UIColor {
    static var myRed: UIColor { 
        // define your color here
        return UIColor(...) 
    }
}

甚至......

extension UIColor {
    static let myRed = UIColor(... define the color values here ...)
}

然后像...那样访问它。

let someColor: UIColor = .myRed

let otherColor = UIColor.myRed

这也符合标准颜色的定义方式..

UIColor.red
UIColor.yellow
UIColor.myRed

等...

答案 1 :(得分:-2)

可能有一千种不同的方法,但我使用以下扩展名:

extension UIColor {

    convenience init(rgb: UInt) {
        self.init(
            red: CGFloat((rgb & 0xFF0000) >> 16) / 255.0,
            green: CGFloat((rgb & 0x00FF00) >> 8) / 255.0,
            blue: CGFloat(rgb & 0x0000FF) / 255.0,
            alpha: CGFloat(1.0)
        )
    }
}

然后,您可以使用RGB颜色的常见HEX颜色代码设置任何对象的颜色。在这里快速找到HEX颜色:http://www.color-hex.com/

view.backgroundColor = UIColor(rgb: 0xFF0000)会将backgroundColor视图设置为红色。

希望这有帮助