Comment puis-je créer un à UIColor
partir d'un format de chaîne hexadécimal , tel que #00FF00
?
ios
cocoa-touch
uicolor
Rupesh
la source
la source
Réponses:
J'ai trouvé le moyen le plus simple de le faire avec une macro. Il vous suffit de l'inclure dans votre en-tête et il sera disponible tout au long de votre projet.
macro uicolor avec des valeurs hexadécimales
Version également formatée de ce code:
Usage:
la source
Une solution concise:
la source
if ( [hexString rangeOfString:@"#"].location == 0 )
avant lasetScanLocation
ligne pour rendre l'#
option facultative.J'ai une solution 100% compatible avec les chaînes de format hexadécimal utilisées par Android, que j'ai trouvé très utile lors du développement mobile multiplateforme. Cela me permet d'utiliser une palette de couleurs pour les deux plates-formes. N'hésitez pas à réutiliser sans attribution, ou sous la licence Apache si vous préférez.
la source
colorComponentFrom:start:length:
, ne devrait pas vous avoirreturn hexComponent / 0xFF; // divide by 255, not 256
? La plus grande valeur hexadécimale que vous devriez récupérer est 0xFF, c'est donc ce que vous devez diviser par 0xFF (255).[@"#538aa4" toColor]
Il y a un bon article sur la façon d'aborder la question de l'OP d'extraire un
UIColor
d'une chaîne hexadécimale. La solution présentée ci-dessous est différente des autres car elle prend en charge les valeurs de chaîne qui peuvent inclure '0x' ou '#' préfixé à la représentation de chaîne hexadécimale ... (voir utilisation)Voici le bit principal ...
Méthode d'assistance ...
Usage:
Article de référence complet
Swift 2+
J'ai porté cette solution sur Swift 2.2. Notez que j'ai changé le
alpha
paramètre pour utiliser un ensemble par défaut à 1.0. J'ai également mis à jour le type intUInt32
comme requis par laNSScanner
classe dans Swift 2.2.Swift 4+
En utilisant la même logique avec les changements appliqués pour swift 4,
la source
alpha
de ne jamais être réglé sur zéro? Parce que cette méthode donne aux gens cette capacité, et si quelqu'un décide de régleralpha
sur zéro, le déballage forcé de cette option entraînera invariablement un plantage. Je ne l'ai pas édité, cependant, au cas où il y aurait une justification dont je ne suis pas au courant.Il s'agit d'une fonction qui prend une chaîne hexadécimale et renvoie un UIColor.
(Vous pouvez entrer des chaînes hexadécimales avec l'un
#ffffff
ou l' autre format: ouffffff
)Usage:
Swift 4:
Swift 3:
Swift 2:
Source: arshad / gist: de147c42d7b3063ef7bc
la source
Utilisez cette catégorie:
dans le fichier UIColor + Hexadecimal.h
dans le fichier UIColor + Hexadecimal.m
En classe, vous voulez l'utiliser:
et:
la source
Une excellente implémentation Swift (mise à jour pour Xcode 7) utilisant des extensions, rassemblées à partir d'une variété de réponses et de lieux différents. Vous aurez également besoin des extensions de chaîne à la fin.
Utilisation:
REMARQUE: j'ai ajouté une option pour 2 chiffres supplémentaires à la fin de la valeur hexadécimale standard à 6 chiffres pour un canal alpha (passez la valeur de
00
-99
). Si cela vous offense, supprimez-le. Vous pouvez l'implémenter pour passer un paramètre alpha facultatif.Extension:
Extensions de chaîne:
Float source
Subscript source
la source
countElements()
a été remplacé parcount()
dans Swift 1.2, il est intégré dans la langue. J'ai mis à jour ma réponse pour refléter cela.Vous pouvez créer une extension comme celle-ci
Et utilisez-le n'importe où comme ça
la source
#00FF00
est clairement destinée à être une chaîne de caractères. Comme d'autres l'ont dit, c'est simple, concis. Mais s'il ne traite pas des chaînes, il ne peut pas répondre à une question demandant comment gérer les chaînes.Il n'y a pas de conversion intégrée d'une chaîne hexadécimale en
UIColor
(ouCGColor
) à ma connaissance. Cependant, vous pouvez facilement écrire quelques fonctions à cet effet - par exemple, voir développement d'iphone accédant aux composants uicolorla source
+colorWithHexString:
ne fonctionne pas. Du moins dans mon cas. :)J'ai trouvé une bonne
UIColor
catégorie pour cela, UIColor + PXExtensions .Usage:
UIColor *mycolor = [UIColor pxColorWithHexValue:@"#BADA55"];
Et, juste au cas où le lien vers mon gist échoue, voici le code d'implémentation réel:
la source
version rapide. Utiliser comme une fonction ou une extension.
Une fonction Extension Comment appeler Vous pouvez également définir votreHex Color
constructeur d'interface.la source
Ceci est une autre alternative.
la source
Vous pouvez utiliser divers outils en ligne pour convertir une chaîne HEX en une véritable UIColor. Consultez uicolor.org ou UI Color Picker . La sortie serait convertie en code Objective-C, comme:
Que vous pourriez intégrer dans votre application. J'espère que cela t'aides!
la source
SWIFT 4
Vous pouvez créer un joli
convenience
constructeur dans l'extension comme ceci:Et l'utiliser plus tard comme
la source
Usage:
la source
C'est bien avec le support cocoapod
https://github.com/mRs-/HexColors
la source
Une autre version avec alpha
la source
Équivalent rapide de la réponse de @ Tom, bien que recevant la valeur RGBA Int pour prendre en charge la transparence:
Et si vous voulez pouvoir l'utiliser à partir d'une chaîne, vous pouvez utiliser strtoul:
la source
Voici une
Swift 1.2
version écrite en tant qu'extension deUIColor
. Cela vous permet de faireJe pense que c'est la façon la plus naturelle de le faire.
la source
let greenRange = ...
j'obtiens une exception:fatal error: can not increment endIndex
Une autre implémentation permettant des chaînes comme
"FFF"
ou"FFFFFF"
et utilisant alpha:la source
mis à jour pour swift 1.2
la source
Créez une extension élégante pour
UIColor
:Créez une couleur rouge:
la source
la source
la source
J'aime assurer l'alpha en plus de la couleur, donc j'écris ma propre catégorie
facile à utiliser comme ça
la source
J'ai créé une init de commodité pour cela:
alors vous pouvez créer un UIColor n'importe où dans votre projet comme ceci:
J'espère que cela t'aides...
la source
Vous pouvez créer une classe d'extension UIColor comme: -
extension UIColor {
// MARK: - getColorFromHex / ** Cette fonction convertira le code couleur Hex en RVB.
}
la source
Pour swift 2.0+. Ce code me convient parfaitement.
Ce code inclut la vérification du format de chaîne. par exemple
Et pour autant que je sache, mon code n'est d'aucun inconvénient pour le maintien de la sémantique de la condition défaillante et le retour d'une valeur facultative. Et cela devrait être la meilleure réponse.
la source
La version Swift 2.0 de la solution qui gérera la valeur alpha de la couleur et avec une gestion parfaite des erreurs est ici:
la source
Usage
la source