¿Cómo puedo crear una UIColor
desde un hexadecimal formato de cadena, tales como #00FF00
?
ios
cocoa-touch
uicolor
Rupesh
fuente
fuente
Respuestas:
He encontrado que la forma más sencilla de hacerlo es con una macro. Solo inclúyalo en su encabezado y estará disponible en todo su proyecto.
macro uicolor con valores hexadecimales
También versión formateada de este código:
Uso:
fuente
Una solución concisa:
fuente
if ( [hexString rangeOfString:@"#"].location == 0 )
antes de lasetScanLocation
línea para hacer el#
opcional.Tengo una solución que es 100% compatible con las cadenas de formato hexadecimal utilizadas por Android, lo que me pareció muy útil al realizar el desarrollo móvil multiplataforma. Me permite usar una paleta de colores para ambas plataformas. Siéntase libre de reutilizar sin atribución, o bajo la licencia de Apache si lo prefiere.
fuente
colorComponentFrom:start:length:
, no deberías tenerreturn hexComponent / 0xFF; // divide by 255, not 256
? El valor hexadecimal más grande que debería recuperar es 0xFF, por lo tanto, eso es lo que debería dividir por 0xFF (255).[@"#538aa4" toColor]
Hay una buena publicación sobre cómo abordar la cuestión del OP de extraer una
UIColor
cadena hexadecimal. La solución presentada a continuación es diferente de otras porque admite valores de cadena que pueden incluir '0x' o '#' con el prefijo de la representación de cadena hexadecimal ... (ver uso)Aquí está el bit principal ...
Método auxiliar ...
Uso:
Artículo de referencia completo
Swift 2+
He portado esta solución a Swift 2.2. Tenga en cuenta que he cambiado el
alpha
parámetro para usar un conjunto predeterminado a 1.0. También actualicé el tipo intUInt32
según lo requerido por laNSScanner
clase en Swift 2.2.Swift 4+
Usando la misma lógica con los cambios aplicados para swift 4,
fuente
alpha
que alguna vez se establezca en cero? Debido a que este método le da a las personas esa habilidad, y si alguien decide estableceralpha
un valor nulo, el desenvolvimiento forzado de ese opcional conducirá invariablemente a un bloqueo. Sin embargo, no lo he editado, en caso de que haya alguna justificación de la que no tenga conocimiento.Esta es una función que toma una cadena hexadecimal y devuelve un UIColor.
(Puede ingresar cadenas hexadecimales con cualquier formato:
#ffffff
offffff
)Uso:
Swift 4:
Swift 3:
Swift 2:
Fuente: arshad / gist: de147c42d7b3063ef7bc
fuente
Use esta categoría:
en el archivo UIColor + Hexadecimal.h
en el archivo UIColor + Hexadecimal.m
En clase quieres usarlo:
y:
fuente
Una gran implementación de Swift (actualizada para Xcode 7) usando extensiones, reunidas de una variedad de diferentes respuestas y lugares. También necesitará las extensiones de cadena al final.
Utilizar:
NOTA: Agregué una opción para 2 dígitos adicionales al final del valor hexadecimal estándar de 6 dígitos para un canal alfa (pase el valor de
00
-99
). Si esto te ofende, simplemente quítalo. Puede implementarlo para pasar un parámetro alfa opcional.Extensión:
Extensiones de cadena:
fuente flotante Fuente de
subíndice
fuente
countElements()
fue reemplazado porcount()
Swift 1.2, está integrado en el lenguaje. Actualicé mi respuesta para reflejar eso.Puedes hacer una extensión como esta
Y úsalo en cualquier lugar como este
fuente
#00FF00
está claramente destinada a ser una cadena de caracteres. Como otros han dicho, es simple, conciso. Pero si no trata con cadenas, no puede responder una pregunta sobre cómo lidiar con cadenas.No hay conversión integrada de una cadena hexadecimal a una
UIColor
(oCGColor
) que yo sepa. Sin embargo, puede escribir fácilmente un par de funciones para este propósito; por ejemplo, vea el desarrollo de iPhone para acceder a los componentes uicolorfuente
+colorWithHexString:
no funciona. Al menos en mi caso. :)Encontré una buena
UIColor
categoría para esto, UIColor + PXExtensions .Uso:
UIColor *mycolor = [UIColor pxColorWithHexValue:@"#BADA55"];
Y, en caso de que falle el enlace a mi esencia, aquí está el código de implementación real:
fuente
versión rápida Usar como una función o una extensión.
Función Extensión Como llamar También puede definir suHex Color
generador de interfaz from.fuente
Esta es otra alternativa.
fuente
Puede usar varias herramientas en línea para convertir una cadena HEX a un UIColor real. Visite uicolor.org o UI Color Picker . La salida se convertiría en código Objective-C, como:
Lo que podría incrustar en su aplicación. ¡Espero que esto ayude!
fuente
SWIFT 4
Puede crear un buen
convenience
constructor en la extensión como este:Y úsalo más tarde como
fuente
Uso:
fuente
Esto es bueno con el soporte de cocoapod
https://github.com/mRs-/HexColors
fuente
Otra versión con alfa
fuente
Equivalente rápido de la respuesta de @ Tom, aunque recibe el valor RGBA Int para respaldar la transparencia:
Y si quieres poder usarlo desde una cadena, puedes usar strtoul:
fuente
Aquí hay una
Swift 1.2
versión escrita como una extensión deUIColor
. Esto te permite hacerLo que siento es la forma más natural de hacerlo.
fuente
let greenRange = ...
, obtengo una excepción:fatal error: can not increment endIndex
Otra implementación que permite cadenas como
"FFF"
o"FFFFFF"
y que usa alfa:fuente
actualizado para swift 1.2
fuente
Crea una extensión elegante para
UIColor
:Crear color rojo:
fuente
fuente
fuente
Me gusta asegurar el alfa además del color, así que escribo mi propia categoría
fácil de usar así
fuente
Creé un init de conveniencia para eso:
entonces puede crear un UIColor en cualquier parte de su proyecto así:
espero que esto ayude...
fuente
Puede crear una clase de extensión de UIColor como: -
extensión UIColor {
// MARK: - getColorFromHex / ** Esta función convertirá el código hexadecimal de color a RGB.
}
fuente
Para swift 2.0+. Este código me funciona bien.
Este código incluye la verificación del formato de cadena. p.ej
Y hasta donde yo sé, mi código no es una desventaja para mantener la semántica de la condición fallida y devolver un valor opcional. Y esta debería ser la mejor respuesta.
fuente
La versión Swift 2.0 de la solución que manejará el valor alfa del color y con un perfecto manejo de errores está aquí:
fuente
Uso
fuente