Isso é compatível apenas com iOS 5.0 ou mais recente.
Jon Trauntvein
3
Esteja avisado que este método só terá sucesso se a cor inicial estiver em "um espaço de cor compatível", que pode variar dependendo do dispositivo / sistema operacional. Por exemplo, acabei de descobrir que chamar isso de [UIColor darkGrayColor] irá falhar em um iPad 2 executando iOS 7. No entanto, a mesma cor funciona bem em um iPad Air executando iOS 8.
devios1
@ devios1 Isso pode provavelmente ser resolvido primeiro serializando a cor e depois desserializando-a usando NSKeyedArchiver, assim:multipliedColor = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject: multipliedColor]];
Albert Renshaw
40
SWIFT 3 e 4
Descobri que cgColor.components nem sempre retornaria 4 valores de cor, então mudei isso para obtê-los de um wrapper CIColor
não gerou um aviso por tentar lançar CGFloat implicitamente para flutuar? :)
braden
5
UIColor*color =[[UIColor greenColor] retain];//line 1//OR(You will have color variable either like line 1 or line 2)
color = curView.backgroundColor;//line 2CGColorRef colorRef =[color CGColor];int _countComponents =CGColorGetNumberOfComponents(colorRef);if(_countComponents ==4){constCGFloat*_components =CGColorGetComponents(colorRef);CGFloat red = _components[0];CGFloat green = _components[1];CGFloat blue = _components[2];CGFloat alpha = _components[3];NSLog(@"%f,%f,%f,%f",red,green,blue,alpha);}[color release];
Desde o iOS 2.0, há um método de instância privado UIColorchamado styleStringque retorna uma representação de string RGB ou RGBA da cor, mesmo para cores como whiteColor fora do espaço RGB.
Em Swift, você pode usar um cabeçalho de ponte para expor a interface. Com Swift puro, você precisará criar um @objcprotocolo com o método privado e unsafeBitCastUIColorcom o protocolo:
importHandyUIKitlet color =UIColor(red:0.1, green:0.2, blue:0.3, alpha:0.4)// get any of the rgba values
color.rgba.red // => 0.1
color.rgba.green // => 0.2
color.rgba.blue // => 0.3
color.rgba.alpha // => 0.4
Também existe uma opção semelhante para obter hsbavalores :
let color =UIColor(hue:0.1, saturation:0.2, brightness:0.3, alpha:0.4)// you can get any of the hsba values, too
color.hsba.hue // => 0.1
color.hsba.saturation // => 0.2
color.hsba.brightness // => 0.3
color.hsba.alpha // => 0.4
Respostas:
Esses links fornecem mais detalhes:
fonte
colors
, você pode escrever algo como,CGFloat red = colors[0];
error: <EXPR>:3:1: error: 'CGColorGetComponents' has been replaced by property 'CGColor.components'
No iOS 5, você pode usar:
fonte
NSKeyedArchiver
, assim:multipliedColor = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject: multipliedColor]];
SWIFT 3 e 4
Descobri que cgColor.components nem sempre retornaria 4 valores de cor, então mudei isso para obtê-los de um wrapper CIColor
SWIFT 2
Não é a maneira mais eficiente, então eu não usaria isso, onde uma visão será constantemente redesenhada.
fonte
Espero que isso seja útil
fonte
Acabei de criar uma categoria para isso.
É algo como:
Parte
eppz!kit
com mais guloseimas UIColor .fonte
Obrigado. Tive que adicionar o
const
no início da linha, pois estava gerando um aviso.fonte
fonte
Resposta da versão 3 do Swift de David Rees:
fonte
Você pode usar componentes CIColor (swift 5)
isso também funciona para espaços de cores não RGB
fonte
Desde o iOS 2.0, há um método de instância privado
UIColor
chamadostyleString
que retorna uma representação de string RGB ou RGBA da cor, mesmo para cores como whiteColor fora do espaço RGB.Objective-C:
Em Swift, você pode usar um cabeçalho de ponte para expor a interface. Com Swift puro, você precisará criar um
@objc
protocolo com o método privado eunsafeBitCast
UIColor
com o protocolo:fonte
A resposta mais votada está desatualizada:
Em vez disso, use
myUIColor.cgColor.components
fonte
Eu queria obter a cor de fundo de
UITableViewStyle
"UITableViewStyleGrouped", portanto, noviewDidAppear:
método, adicionei o código:NSLog(@"%@", self.tableView.backgroundView.backgroundColor);
Ele fez o que eu esperava e retornou o log:
UIDeviceRGBColorSpace 0.937255 0.937255 0.956863 1
Resumindo, basta digitar
NSLog(@"%@", [UIColor whateverColor]);
fonte
Usar o HandyUIKit torna isso realmente fácil :
Também existe uma opção semelhante para obter
hsba
valores :Basta instalá-lo usando o Carthage e .
Espero que ajude!
fonte
Algumas macros úteis que fiz para este e outros controles de cores:
No seu caso, você apenas usaria
Macros:
fonte
defina sua UIColor assim
isso é para Xamarin ios ... mas com certeza existe um método como este no swift.
fonte