Wie kann ich ein UIColor
aus einem hexadezimalen Zeichenfolgenformat erstellen , z #00FF00
.
ios
cocoa-touch
uicolor
Rupesh
quelle
quelle
Antworten:
Ich habe den einfachsten Weg gefunden, dies mit einem Makro zu tun. Fügen Sie es einfach in Ihren Header ein und es ist im gesamten Projekt verfügbar.
Farbiges Makro mit Hex-Werten
Auch formatierte Version dieses Codes:
Verwendungszweck:
quelle
Eine prägnante Lösung:
quelle
if ( [hexString rangeOfString:@"#"].location == 0 )
vor dersetScanLocation
Zeile hinzufügen , um die#
Option zu aktivieren.Ich habe eine Lösung, die zu 100% mit den von Android verwendeten Zeichenfolgen im Hex-Format kompatibel ist, was ich bei der plattformübergreifenden mobilen Entwicklung sehr hilfreich fand. Damit kann ich für beide Plattformen einen Farbgaumen verwenden. Sie können es ohne Namensnennung oder unter der Apache-Lizenz wiederverwenden, wenn Sie dies bevorzugen.
quelle
colorComponentFrom:start:length:
, solltest du nicht habenreturn hexComponent / 0xFF; // divide by 255, not 256
? Der größte Hex-Wert, den Sie zurückerhalten sollten, ist 0xFF. Dies sollten Sie also durch 0xFF (255) teilen.[@"#538aa4" toColor]
Es gibt einen schönen Beitrag darüber, wie man die Frage des OP, ein
UIColor
aus einem Hex-String zu extrahieren, angeht. Die unten dargestellte Lösung unterscheidet sich von anderen, da sie Zeichenfolgenwerte unterstützt, die '0x' oder '#' enthalten können, die der Hex-Zeichenfolgendarstellung vorangestellt sind ... (siehe Verwendung)Hier ist das Hauptstück ...
Hilfsmethode ...
Verwendungszweck:
Vollständiger Referenzartikel
Swift 2+
Ich habe diese Lösung auf Swift 2.2 portiert. Beachten Sie, dass ich den
alpha
Parameter so geändert habe , dass ein Standardwert von 1,0 verwendet wird. Ich habe auch den int-Typ auf die AnforderungenUInt32
derNSScanner
Klasse in Swift 2.2 aktualisiert .Swift 4+
Verwenden der gleichen Logik mit Änderungen für Swift 4,
quelle
alpha
, jemals auf Null gesetzt zu werden? Da diese Methode den Menschen diese Fähigkeit verleiht und sich jemandalpha
für Null entscheiden sollte , führt das erzwungene Auspacken dieser Option ausnahmslos zu einem Absturz. Ich habe es jedoch nicht bearbeitet, falls es eine Rechtfertigung gibt, die mir nicht bekannt ist.Dies ist eine Funktion, die eine Hex-Zeichenfolge verwendet und eine UIColor zurückgibt.
(Sie können Hex-Zeichenfolgen in folgenden Formaten eingeben:
#ffffff
oderffffff
)Verwendungszweck:
Swift 4:
Swift 3:
Swift 2:
Quelle: arshad / gist: de147c42d7b3063ef7bc
quelle
Verwenden Sie diese Kategorie:
in der Datei UIColor + Hexadecimal.h
in der Datei UIColor + Hexadecimal.m
In der Klasse möchten Sie es verwenden:
und:
quelle
Eine großartige Swift-Implementierung (aktualisiert für Xcode 7) mit Erweiterungen, die aus verschiedenen Antworten und Orten zusammengestellt wurden. Sie benötigen auch die Zeichenfolgenerweiterungen am Ende.
Verwenden:
HINWEIS: Ich habe eine Option für 2 zusätzliche Ziffern am Ende des 6-stelligen Standard-Hex-Werts für einen Alphakanal hinzugefügt (Übergabewert von
00
-99
). Wenn Sie dies beleidigt, entfernen Sie es einfach. Sie können es implementieren, um einen optionalen Alpha-Parameter zu übergeben.Erweiterung:
String-Erweiterungen:
Float-Quelle
Index-Quelle
quelle
countElements()
wurde durchcount()
in Swift 1.2 ersetzt, es ist in die Sprache eingebaut. Ich habe meine Antwort aktualisiert, um dies widerzuspiegeln.Sie können eine solche Erweiterung erstellen
Und verwenden Sie es überall so
quelle
#00FF00
soll sie eindeutig eine Zeichenfolge sein. Wie andere gesagt haben, ist es einfach, prägnant. Wenn es sich jedoch nicht um Zeichenfolgen handelt, kann es möglicherweise keine Frage beantworten, wie mit Zeichenfolgen umgegangen werden soll.Es gibt keine eingebaute Konvertierung von einer hexadezimalen Zeichenfolge in eine
UIColor
(oderCGColor
), die mir bekannt ist. Sie können jedoch problemlos einige Funktionen für diesen Zweck schreiben - siehe beispielsweise iPhone-Entwicklung, die auf uicolor-Komponenten zugreiftquelle
+colorWithHexString:
funktioniert nicht. Zumindest in meinem Fall. :)Ich habe dafür eine gute
UIColor
Kategorie gefunden , UIColor + PXExtensions .Verwendungszweck:
UIColor *mycolor = [UIColor pxColorWithHexValue:@"#BADA55"];
Und für den Fall, dass der Link zu meinem Kern fehlschlägt, finden Sie hier den eigentlichen Implementierungscode:
quelle
schnelle Version. Verwendung als Funktion oder Erweiterung.
Funktion Erweiterung Wie rufe ich an? Sie können auch IhrenHex Color
From Interface Builder definieren.quelle
Dies ist eine weitere Alternative.
quelle
Sie können verschiedene Online-Tools verwenden, um eine HEX-Zeichenfolge in eine tatsächliche UIColor zu konvertieren. Schauen Sie sich uicolor.org oder UI Color Picker an . Die Ausgabe würde in Objective-C-Code konvertiert, wie:
Was Sie in Ihre Anwendung einbetten könnten. Hoffe das hilft!
quelle
SWIFT 4
Sie können einen schönen
convenience
Konstruktor in der Erweiterung wie folgt erstellen :Und benutze es später gerne
quelle
Verwendungszweck:
quelle
Das ist schön mit Cocoapod- Unterstützung
https://github.com/mRs-/HexColors
quelle
Eine andere Version mit Alpha
quelle
Schnelles Äquivalent zu @ Toms Antwort, obwohl RGBA Int-Wert zur Unterstützung der Transparenz erhalten wird:
Und wenn Sie es von einem String aus verwenden möchten, können Sie strtoul verwenden:
quelle
Hier ist eine
Swift 1.2
Version, die als Erweiterung zu geschrieben wurdeUIColor
. Dies ermöglicht es Ihnen zu tunWas ich für die natürlichste Art halte, es zu tun.
quelle
let greenRange = ...
bekomme ich eine Ausnahme:fatal error: can not increment endIndex
Eine weitere Implementierung, die Zeichenfolgen wie
"FFF"
oder"FFFFFF"
und die Verwendung von Alpha ermöglicht:quelle
aktualisiert für schnelle 1.2
quelle
Erstellen Sie eine elegante Erweiterung für
UIColor
:Erstellen Sie rote Farbe:
quelle
quelle
quelle
Ich mag es, das Alpha neben der Farbe zu gewährleisten, also schreibe ich meine eigene Kategorie
einfach so zu bedienen
quelle
Ich habe dafür eine Convenience-Init erstellt:
Dann können Sie eine UIColor überall in Ihrem Projekt wie folgt erstellen:
hoffe das hilft...
quelle
Sie können die Erweiterungsklasse von UIColor wie folgt erstellen: -
Erweiterung UIColor {
// MARK: - getColorFromHex / ** Diese Funktion konvertiert den Hex-Farbcode in RGB.
}}
quelle
Für schnelle 2.0+. Dieser Code funktioniert gut für mich.
Dieser Code enthält die Überprüfung des Zeichenfolgenformats. z.B
Und soweit ich weiß, ist mein Code kein Nachteil, da er die Semantik eines fehlerhaften Zustands beibehält und einen optionalen Wert zurückgibt. Und das sollte die beste Antwort sein.
quelle
Die Swift 2.0- Version der Lösung, die den Alpha-Wert der Farbe und die perfekte Fehlerbehandlung verarbeitet, ist hier:
quelle
Verwendungszweck
quelle