有没有人知道是否有可能从可可中的NSColor获得颜色的十六进制值?在可可中从NSColor获取十六进制值?
2
A
回答
7
实施例使用蓝色NSColor:
NSColor* color = [NSColor blueColor];
NSString* hexString = [NSString stringWithFormat:@"%02X%02X%02X",
(int) (color.redComponent * 0xFF), (int) (color.greenComponent * 0xFF),
(int) (color.blueComponent * 0xFF)];
1
一个选择是创建一个扩展NSColor
public extension NSColor {
func getHexString() -> String {
let red = Int(round(self.redComponent * 0xFF))
let grn = Int(round(self.greenComponent * 0xFF))
let blu = Int(round(self.blueComponent * 0xFF))
let hexString = NSString(format: "#%02X%02X%02X", red, grn, blu)
return hexString
}
}
1
我喜欢DAH的解决方案,我使其成为计算的属性,而不是一个功能:
import Cocoa
extension NSColor {
var hexString: String {
let red = Int(round(self.redComponent * 0xFF))
let green = Int(round(self.greenComponent * 0xFF))
let blue = Int(round(self.blueComponent * 0xFF))
let hexString = NSString(format: "#%02X%02X%02X", red, green, blue)
return hexString as String
}
}
1
由于色彩空间问题而不会崩溃的解决方案:
import Cocoa
extension NSColor {
var hexString: String {
guard let rgbColor = usingColorSpaceName(NSCalibratedRGBColorSpace) else {
return "FFFFFF"
}
let red = Int(round(rgbColor.redComponent * 0xFF))
let green = Int(round(rgbColor.greenComponent * 0xFF))
let blue = Int(round(rgbColor.blueComponent * 0xFF))
let hexString = NSString(format: "#%02X%02X%02X", red, green, blue)
return hexString as String
}
}
+0
颜色空间修正修改颜色(朝向我的机器上的黑色),产生稍微错误的十六进制字符串 – 2017-05-24 09:28:55
相关问题
- 1. 十六进制nsuinteger可可
- 2. 获取不同的十六进制值
- 3. 获取十六进制值,并转换为十进制
- 4. 从十六进制值
- 5. 从控制台中获取一个十六进制值C
- 6. 从UIColors中获取RGB值从十六进制颜色派生
- 7. 十进制到十六进制 - 可可/ Objective-C
- 8. 在Perl中将原始十六进制转换为可读的十六进制?
- 9. 十六进制值
- 10. 十六进制值在Android
- 11. 从十六进制
- 12. 在VB6中将十六进制值转换为十进制值
- 13. 从文件中读取十六进制
- 14. 十六进制串&十六进制
- 15. 在perl中从行中提取十六进制值
- 16. 在ICU4C中获取UChar的十六进制值
- 17. 如何从matlab中的wavefile获取十六进制或二进制值?
- 18. 获取从十六进制数据的整数值
- 19. 如何从IMUL获取十六进制值DX和AX?
- 20. 转换NSColor字符串表示<->十六进制的php
- 21. Lua:从二进制读取十六进制值
- 22. 在PHP中获取最低有效位从十六进制
- 23. 转换十六进制字符串十六进制值
- 24. 添加十六进制值以得到十六进制结果
- 25. python字符串与十六进制转义十六进制值
- 26. 将十六进制拆分为2个十六进制值
- 27. 在Visual C++中将十进制值转换为十六进制
- 28. 在Python中将十六进制值转换为十进制
- 29. 在C++中将十六进制十六进制字符标记为十进制
- 30. 将十进制转换为十六进制和十六进制
小心!在所有'NSColor'实例上调用'-redComponent'等并不总是合法的。他们可能会抛出异常。您必须转换为RGB色彩空间并应对失败。您应该看到[技术问答QA1576:如何获取NSColor对象的十六进制值?](http://developer.apple.com/library/mac/#qa/qa1576/_index.html)。 – 2013-04-08 21:23:49