在xcode中制作RGB颜色

ama*_*mar 63 objective-c uicolor ios

我正在使用照片商店中颜色的RGB值,并在xcode中使用相同值.颜色-R-160,G-97,B-5 ...... photoshop中的颜色显示为黄色,但在使用xcode时

myLabel.textColor = [UIColor colorWithRed:160 green:97 blue:5 alpha:1] ;
Run Code Online (Sandbox Code Playgroud)

颜色看起来发白.

为什么会出现这种差异?

iPr*_*abu 199

Objective-C的

您必须提供0到1.0之间的值.因此,将RGB值除以255.

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

更新:

您也可以使用此宏

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

你可以在这样的任何一个班级打电话

 myLabel.textColor = Rgb2UIColor(160, 97, 5);
Run Code Online (Sandbox Code Playgroud)

迅速

这是正常的颜色synax

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

Swift对宏不太友好

复杂的宏在C和Objective-C中使用,但在Swift中没有对应的.复杂的宏是不定义常量的宏,包括带括号的,类似函数的宏.您可以在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)
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以像使用它一样

myLabel.textColor = UIColor(160.0, 97.0, 5.0, 1.0)
Run Code Online (Sandbox Code Playgroud)

  • @nipponese:使用合理颜色值的原因是它使通道乘法更容易,更快.例如,它用于混合.`UIColor`表示使用[0..1]范围的RGB(A)颜色.上面的计算只是将每个通道从[0..255]范围缩放到[0..1]范围.在Photoshop中,您使用[0..255]范围(例如:`rgba(160,97,5,1)`)或其十六进制等效值(例如:`#A06105FF`). (4认同)

jwe*_*ich 25

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

#import "UIColor+Helper.h"
// ...
myLabel.textColor = [UIColor colorWithRGBA:0xA06105FF];
Run Code Online (Sandbox Code Playgroud)

的UIColor + Helper.h:

#import <UIKit/UIKit.h>

@interface UIColor (Helper)
+ (UIColor *)colorWithRGBA:(NSUInteger)color;
@end
Run Code Online (Sandbox Code Playgroud)

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


All*_*bhu 5

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


hfo*_*sli 5

Interface Builder的颜色选择器插件

Panic 有一个很好的颜色选择器,它可以很好地与 IB 配合使用:http : //panic.com/~wade/picker/

Xcode插件

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

目标-C

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

迅速

let color = UIColor(red: 160/255, green: 97/255, blue: 5/255, alpha: 1.0)
Run Code Online (Sandbox Code Playgroud)

Pod 和库

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