【问题标题】:Making RGB color in Xcode在 Xcode 中制作 RGB 颜色
【发布时间】:2012-05-09 21:02:34
【问题描述】:

我正在使用来自 Photoshop 的颜色的 RGB 值,并在 Xcode 中使用相同的值。Color-R-160,G-97,B-5...当我在 Photoshop 中的颜色显示为黄色但在 Xcode 中时用过

myLabel.textColor = [UIColor colorWithRed:160 green:97 blue:5 alpha:1] ;

颜色呈白色。

为什么会出现这种差异?

【问题讨论】:

    标签: ios objective-c uicolor


    【解决方案1】:

    目标-C

    您必须给出介于 0 和 1.0 之间的值。所以将 RGB 值除以 255。

    myLabel.textColor= [UIColor colorWithRed:(160/255.0) green:(97/255.0) blue:(5/255.0) alpha:1] ;
    

    更新:

    你也可以使用这个宏

    #define Rgb2UIColor(r, g, b)  [UIColor colorWithRed:((r) / 255.0) green:((g) / 255.0) blue:((b) / 255.0) alpha:1.0]
    

    你可以像这样调用你的任何班级

     myLabel.textColor = Rgb2UIColor(160, 97, 5);
    

    斯威夫特

    这是正常的颜色合成法

    myLabel.textColor = UIColor(red: (160/255.0), green: (97/255.0), blue: (5/255.0), alpha: 1.0) 
    //The values should be between 0 to 1
    

    Swift 对宏不太友好

    C 和 Objective-C 中使用了复杂的宏,但没有对应的宏 在斯威夫特。复杂宏是不定义常量的宏, 包括带括号的类似函数的宏。您使用复杂的宏 在 C 和 Objective-C 中避免类型检查约束或避免 重新输入大量样板代码。但是,宏可以使 调试和重构困难。在 Swift 中,您可以使用函数 和泛型在没有任何妥协的情况下达到相同的结果。 因此,C 和 Objective-C 源代码中的复杂宏 文件对您的 Swift 代码不可用。

    所以我们为此使用扩展名

    extension UIColor {
        convenience init(_ r: Double,_ g: Double,_ b: Double,_ a: Double) {
            self.init(red: r/255, green: g/255, blue: b/255, alpha: a)
        }
    }
    

    你可以像这样使用它

    myLabel.textColor = UIColor(160.0, 97.0, 5.0, 1.0)
    

    【讨论】:

    • 小数颜色值有什么意义?我无法在 Photoshop 中输出任何此类值?
    • @nipponese:使用有理颜色值的原因是它使通道倍增更容易和更快。例如,它用于混合。 UIColor 表示使用 [0..1] 范围的 RGB(A) 颜色。上面的计算只是将每个通道从 [0..255] 范围缩放到 [0..1] 范围。在 Photoshop 中,您使用 [0..255] 范围(例如:rgba(160, 97, 5, 1))或其十六进制等效值(例如:#A06105FF)。
    • 我只需要宏:)
    • 我认为alpha值也应该在0-255的范围内。
    【解决方案2】:

    你已经得到了正确的答案,但是如果你像我一样不喜欢UIColor的界面,你可以这样做:

    #import "UIColor+Helper.h"
    // ...
    myLabel.textColor = [UIColor colorWithRGBA:0xA06105FF];
    

    UIColor+Helper.h:

    #import <UIKit/UIKit.h>
    
    @interface UIColor (Helper)
    + (UIColor *)colorWithRGBA:(NSUInteger)color;
    @end
    

    UIColor+Helper.m:

    #import "UIColor+Helper.h"
    
    @implementation UIColor (Helper)
    
    + (UIColor *)colorWithRGBA:(NSUInteger)color
    {
        return [UIColor colorWithRed:((color >> 24) & 0xFF) / 255.0f
                               green:((color >> 16) & 0xFF) / 255.0f
                                blue:((color >> 8) & 0xFF) / 255.0f
                               alpha:((color) & 0xFF) / 255.0f];
    }
    
    @end
    

    【讨论】:

      【解决方案3】:

      Yeah.ios 仅支持 RGB 值在 0 和 1 之间的范围内..它的接近范围 [0,1]

      【讨论】:

        【解决方案4】:

        Interface Builder 的颜色选择器插件

        Panic 有一个不错的颜色选择器,它与 IB 配合得很好:http://panic.com/~wade/picker/

        Xcode 插件

        这个为您提供了一个用于选择颜色的 GUI:http://www.youtube.com/watch?v=eblRfDQM0Go

        Objective-C

        UIColor *color = [UIColor colorWithRed:(160/255.0) green:(97/255.0) blue:(5/255.0) alpha:1.0];
        

        斯威夫特

        let color = UIColor(red: 160/255, green: 97/255, blue: 5/255, alpha: 1.0)
        

        Pod 和库

        有一个不错的 pod,名为 MPColorTools: https://github.com/marzapower/MPColorTools

        【讨论】:

          【解决方案5】:

          这些值由图像的位确定。 8 位 0 到 255

          16 位...一些荒谬的数字..0 到 65,000 左右。

          32位是0到1

          我使用 .004 和 32 位图像...乘以 255 后得到 1.02

          【讨论】:

            猜你喜欢
            • 2018-10-22
            • 1970-01-01
            • 2018-06-16
            • 2017-08-20
            • 2012-05-03
            • 1970-01-01
            • 2016-08-10
            • 2014-04-25
            • 1970-01-01
            相关资源
            最近更新 更多