我正在使用照相馆颜色的RGB值,并在xcode中使用相同值。颜色-R-160,G-97,B-5 ...... photoshop中的颜色显示为黄色,但在xcode中
myLabel.textColor= [UIColor colorWithRed:160 green:97 blue:5 alpha:1] ;
颜色显得偏白。
为什么会出现这种差异?
答案 0 :(得分:197)
您必须提供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);
这是正常颜色的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
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)
答案 1 :(得分: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
答案 2 :(得分:5)
Yeah.ios仅支持RGB值介于0和1之间。接近范围[0,1]
答案 3 :(得分:4)
Interface Builder的颜色选择器插件
Panic有一个很好的颜色选择器,可以与IB一起使用:http://panic.com/~wade/picker/
Xcode插件
这个为您提供了一个用于选择颜色的GUI:http://www.youtube.com/watch?v=eblRfDQM0Go
<强>代码强>
UIColor *color = [UIColor colorWithRed:(160/255.0) green:(97/255.0) blue:(5/255.0) alpha:1.0];
广告库和图书馆
有一个名为MPColorTools
的漂亮广告连播:https://github.com/marzapower/MPColorTools
答案 4 :(得分:0)
值由图像的位确定。 8位0到255
16位...一些荒谬的数字......大约是0到65,000。
32位为0到1
我使用带有32位图像的.004 ...当乘以255
时,这得到1.02