64

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

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

颜色呈白色。

为什么会发生这种差异?

4

5 回答 5

200

Objective-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 中使用,但在 Swift 中没有对应物。复杂宏是不定义常量的宏,包括带括号的、类似函数的宏。您在 C 和 Objective-C 中使用复杂的宏来避免类型检查约束或避免重新输入大量样板代码。但是,宏会使调试和重构变得困难。在 Swift 中,您可以使用函数和泛型来获得相同的结果,而不会做出任何妥协。因此,您的 Swift 代码无法使用 C 和 Objective-C 源文件中的复杂宏。

所以我们为此使用扩展名

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)
于 2012-04-30T05:47:12.300 回答
25

你已经得到了正确的答案,但是如果你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
于 2012-04-30T06:04:05.347 回答
5

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

于 2012-04-30T05:57:43.183 回答
5

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,名为MPColorToolshttps ://github.com/marzapower/MPColorTools

于 2014-01-10T15:02:34.260 回答
0

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

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

32位是0到1

我将 .004 与 32 位图像一起使用...乘以 255 后得到 1.02

于 2014-01-10T14:33:04.453 回答