如何在Swift中使用UIColorFromRGB?

NAN*_*NAV 107 ios swift

在Objective-C中,我们使用此代码为视图设置RGB颜色代码:

#define UIColorFromRGB(rgbValue)        
[UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

view.backgroundColor=UIColorFromRGB(0x209624);
Run Code Online (Sandbox Code Playgroud)

我如何在Swift中使用它?

Nat*_*ook 168

这是该函数的Swift版本(用于获取UInt值的UIColor表示):

func UIColorFromRGB(rgbValue: UInt) -> UIColor {
    return UIColor(
        red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
        green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
        blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
        alpha: CGFloat(1.0)
    )
}

view.backgroundColor = UIColorFromRGB(0x209624)
Run Code Online (Sandbox Code Playgroud)


use*_*627 124

我想放

cell.backgroundColor = UIColor.colorWithRed(125/255.0, green: 125/255.0, blue: 125/255.0, alpha: 1.0)  
Run Code Online (Sandbox Code Playgroud)

但那没用.

所以我用过:
对于Swift

cell.backgroundColor = UIColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 1.0)  
Run Code Online (Sandbox Code Playgroud)

所以这是我找到的解决方法.

  • let color:UIColor = UIColor(红色:CGFloat(0/255.0),绿色:CGFloat(110/255.0),蓝色:CGFloat(255/255.0),alpha:CGFloat(1.0)) (31认同)

blo*_*ilk 62

我真的很喜欢Nate Cook的答案,但我想要一些更惯用的东西.我相信通过自定义扩展,这是一个非常好用于方便初始化程序的用例.

// UIColorExtensions.swift
import Foundation
import UIKit

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

现在可以这样使用:

view.backgroundColor = UIColor(rgb: 0x209624)
Run Code Online (Sandbox Code Playgroud)

我只建议猴子在你自己的客户端代码中修补这样的UIKit类,而不是库.


小智 45

myLabel.backgroundColor = UIColor(red: 50.0/255, green: 150.0/255, blue: 65.0/255, alpha: 1.0)
Run Code Online (Sandbox Code Playgroud)


小智 32

以编程方式添加颜色的最简单方法是使用ColorLiteral.

只需添加属性ColorLiteral,如示例所示,Xcode将提示您可以选择的整个颜色列表.这样做的好处是代码较少,添加HEX值或RGB.您还将从故事板中获取最近使用的颜色.

示例: self.view.backgroundColor = ColorLiteral在此输入图像描述

  • 这真太了不起了 ! (4认同)

Eth*_*der 28

如果你是从一个字符串(而不是十六进制)开始,这是一个采用十六进制字符串并返回UIColor的函数.
(您可以使用以下任一格式输入十六进制字符串:#ffffffffffff)

用法:

var color1 = hexStringToUIColor("#d3d3d3")
Run Code Online (Sandbox Code Playgroud)

斯威夫特4:

func hexStringToUIColor (hex:String) -> UIColor {
    var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()

    if (cString.hasPrefix("#")) {
        cString.remove(at: cString.startIndex)
    }

    if ((cString.count) != 6) {
        return UIColor.gray
    }

    var rgbValue:UInt32 = 0
    Scanner(string: cString).scanHexInt32(&rgbValue)

    return UIColor(
        red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
        green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
        blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
        alpha: CGFloat(1.0)
    )
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

func hexStringToUIColor (hex:String) -> UIColor {
    var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()

    if (cString.hasPrefix("#")) {
        cString.remove(at: cString.startIndex)
    }

    if ((cString.characters.count) != 6) {
        return UIColor.gray
    }

    var rgbValue:UInt32 = 0
    Scanner(string: cString).scanHexInt32(&rgbValue)

    return UIColor(
        red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
        green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
        blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
        alpha: CGFloat(1.0)
    )
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特2:

func hexStringToUIColor (hex:String) -> UIColor {
    var cString:String = hex.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet() as NSCharacterSet).uppercaseString

    if (cString.hasPrefix("#")) {
      cString = cString.substringFromIndex(cString.startIndex.advancedBy(1))
    }

    if ((cString.characters.count) != 6) {
      return UIColor.grayColor()
    }

    var rgbValue:UInt32 = 0
    NSScanner(string: cString).scanHexInt(&rgbValue)

    return UIColor(
        red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
        green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
        blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
        alpha: CGFloat(1.0)
    )
}
Run Code Online (Sandbox Code Playgroud)



资料来源:arshad/gist:de147c42d7b3063ef7bc


Con*_*ena 12

对于Xcode 9,使用UIColorRGB值.

shareBtn.backgroundColor = UIColor( red: CGFloat(92/255.0), green: CGFloat(203/255.0), blue: CGFloat(207/255.0), alpha: CGFloat(1.0) )
Run Code Online (Sandbox Code Playgroud)

预习:

具有自定义RGB颜色的按钮预览

请参阅有关UIColor的其他Apple文档.


Mah*_*ari 10

Swift 4 中的 UIColorFromRGB

button.layer.backgroundColor = UIColor(red: 112.0/255, green: 86.0/255, blue: 164.0/255, alpha: 1.0).cgColor
Run Code Online (Sandbox Code Playgroud)


小弟调*_*弟调调 6

https://uiwjs.github.io/ui-color/

斯威夫特用户界面

Color(red: 1.33, green: 0.56, blue: 0.56).opacity(0.61)
Run Code Online (Sandbox Code Playgroud)

适用于 iOS 的 Swift

UIColor(red: 1.33, green: 0.56, blue: 0.56, alpha: 0.61)
Run Code Online (Sandbox Code Playgroud)

适用于 macOS 的 Swift

NSColor(red: 1.33, green: 0.56, blue: 0.56, alpha: 0.61)
Run Code Online (Sandbox Code Playgroud)

适用于 iOS 的 Objective-C

[UIColor colorWithRed: 1.33 green: 0.56 blue: 0.56 alpha: 0.61];
Run Code Online (Sandbox Code Playgroud)

适用于 macOS 的 Objective-C

[NSColor colorWithCalibratedRed: 1.33 green: 0.56 blue: 0.56 alpha: 0.61];
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Imt*_*tee 5

我在swift中使用了以下内容.

let appRedColor = UIColor(red: 200.0/255.0, green: 16.0/255.0, blue: 46.0/255.0, alpha: 1.0)
let appSilverColor = UIColor(red: 236.0/255.0, green: 236.0/255.0, blue: 236.0/255.0, alpha: 1.0)
let appWhiteColor = UIColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1.0)
let appNavyColor = UIColor(red: 19.0/255.0, green: 41.0/255.0, blue: 75.0/255.0, alpha: 1.0)
Run Code Online (Sandbox Code Playgroud)