Начиная с iOS 2.0, в UIColor
существует частный метод экземпляра, называемый styleString
, который возвращает строковое представление цвета RGB или RGBA, даже для цветов, таких как whiteColor, вне пространства RGB.
Objective-C:
@interface UIColor (Private)
- (NSString *)styleString;
@end
// ...
[[UIColor whiteColor] styleString]; // rgb(255,255,255)
[[UIColor redColor] styleString]; // rgb(255,0,0)
[[UIColor lightTextColor] styleString]; // rgba(255,255,255,0.600000)
В Swift вы можете использовать мостовой заголовок для отображения интерфейса. В чистом Swift вам потребуется создать протокол @objc
с закрытым методом и unsafeBitCast
UIColor
с протоколом:
@objc protocol UIColorPrivate {
func styleString() -> String
}
let white = UIColor.whiteColor()
let red = UIColor.redColor()
let lightTextColor = UIColor.lightTextColor()
let whitePrivate = unsafeBitCast(white, UIColorPrivate.self)
let redPrivate = unsafeBitCast(red, UIColorPrivate.self)
let lightTextColorPrivate = unsafeBitCast(lightTextColor, UIColorPrivate.self)
whitePrivate.styleString() // rgb(255,255,255)
redPrivate.styleString() // rgb(255,0,0)
lightTextColorPrivate.styleString() // rgba(255,255,255,0.600000)