Bagaimana saya bisa membuat UIColor
dari format string heksadesimal , seperti #00FF00
?
ios
cocoa-touch
uicolor
Rupesh
sumber
sumber
Jawaban:
Saya telah menemukan cara paling sederhana untuk melakukan ini adalah dengan makro. Cukup sertakan di header Anda dan itu tersedia di seluruh proyek Anda.
makro uicolor dengan nilai hex
Versi kode ini juga diformat:
Pemakaian:
sumber
Solusi ringkas:
sumber
if ( [hexString rangeOfString:@"#"].location == 0 )
sebelumsetScanLocation
baris untuk membuat#
opsional.Saya punya solusi yang 100% kompatibel dengan string format hex yang digunakan oleh Android, yang saya temukan sangat membantu ketika melakukan pengembangan mobile lintas platform. Ini memungkinkan saya menggunakan satu warna langit-langit untuk kedua platform. Jangan ragu untuk menggunakan kembali tanpa atribusi, atau di bawah lisensi Apache jika Anda mau.
sumber
colorComponentFrom:start:length:
, tidak seharusnya Anda milikireturn hexComponent / 0xFF; // divide by 255, not 256
? Nilai hex terbesar yang harus Anda dapatkan kembali adalah 0xFF, jadi itulah yang harus Anda bagi dengan 0xFF (255).[@"#538aa4" toColor]
Ada posting bagus tentang cara mengatasi pertanyaan OP tentang mengekstraksi
UIColor
dari string hex. Solusi yang disajikan di bawah berbeda dari yang lain karena mendukung nilai string yang mungkin termasuk '0x' atau '#' diawali ke representasi string hex ... (lihat penggunaan)Inilah bagian utamanya ...
Metode pembantu ...
Pemakaian:
Artikel Referensi Lengkap
Swift 2+
Saya telah mem-porting solusi ini ke Swift 2.2. Perhatikan bahwa saya telah mengubah
alpha
parameter untuk menggunakan set default ke 1.0. Saya juga memperbarui tipe intUInt32
seperti yang diminta olehNSScanner
kelas di Swift 2.2.Swift 4+
Menggunakan logika yang sama dengan perubahan yang diterapkan untuk swift 4,
sumber
alpha
untuk pernah diisi nil? Karena metode ini memberi orang kemampuan itu, dan jika seseorang harus memutuskan untuk menetapkanalpha
nol, dipaksa membuka bungkus opsional itu akan selalu menyebabkan crash. Saya belum mengeditnya, kalau-kalau ada beberapa pembenaran yang saya tidak sadari.Ini adalah fungsi yang mengambil string hex dan mengembalikan UIColor.
(Anda dapat memasukkan string hex dengan format:
#ffffff
atauffffff
)Pemakaian:
Swift 4:
Swift 3:
Swift 2:
Sumber: arshad / inti: de147c42d7b3063ef7bc
sumber
Gunakan Kategori ini:
dalam file UIColor + Hexadecimal.h
dalam file UIColor + Hexadecimal.m
Di Kelas Anda ingin menggunakannya:
dan:
sumber
Implementasi Swift yang hebat (diperbarui untuk Xcode 7) menggunakan ekstensi, disatukan dari berbagai jawaban dan tempat yang berbeda. Anda juga akan membutuhkan ekstensi string di bagian akhir.
Menggunakan:
CATATAN: Saya menambahkan opsi untuk 2 digit tambahan ke akhir nilai hex 6 digit standar untuk saluran alpha (nilai lulus dari
00
-99
). Jika ini menyinggung Anda, hapus saja. Anda bisa menerapkannya untuk meneruskan parameter alpha opsional.Perpanjangan:
Ekstensi string:
Sumber langganan sumber float
sumber
countElements()
diganti dengancount()
dalam Swift 1.2, itu dibangun ke dalam bahasa. Saya memperbarui jawaban saya untuk mencerminkan hal itu.Anda dapat membuat ekstensi seperti ini
Dan gunakan di mana saja seperti ini
sumber
#00FF00
jelas dimaksudkan untuk menjadi string karakter. Seperti yang orang lain katakan itu sederhana, ringkas. Tetapi jika tidak berurusan dengan string, maka tidak mungkin menjawab pertanyaan yang menanyakan bagaimana menangani string.Tidak ada konversi bawaan dari string heksadesimal ke
UIColor
(atauCGColor
) yang saya ketahui. Namun, Anda dapat dengan mudah menulis beberapa fungsi untuk tujuan ini - misalnya, lihat pengembangan iphone mengakses komponen uicolorsumber
+colorWithHexString:
tidak berfungsi. Setidaknya dalam kasus saya. :)Saya menemukan
UIColor
kategori yang bagus untuk ini, UIColor + PXExtensions .Pemakaian:
UIColor *mycolor = [UIColor pxColorWithHexValue:@"#BADA55"];
Dan, untuk berjaga-jaga jika tautan ke intisari saya gagal, berikut adalah kode implementasi yang sebenarnya:
sumber
versi cepat. Gunakan sebagai Fungsi atau Ekstensi.
Fungsi Perpanjangan Bagaimana cara menelepon Anda juga dapat menentukanHex Color
dari pembuat antarmuka Anda.sumber
Ini adalah alternatif lain.
sumber
Anda bisa menggunakan berbagai alat online untuk mengonversi string HEX ke UIColor yang sebenarnya. Lihat uicolor.org atau UI Color Picker . Output akan dikonversi menjadi kode Objective-C, seperti:
Yang dapat Anda sematkan di aplikasi Anda. Semoga ini membantu!
sumber
SWIFT 4
Anda dapat membuat
convenience
konstruktor yang bagus di ekstensi seperti ini:Dan menggunakannya nanti seperti
sumber
Pemakaian:
sumber
Ini bagus dengan dukungan cocoapod
https://github.com/mRs-/HexColors
sumber
Versi lain dengan alpha
sumber
Setara dengan jawaban @ Tom, walaupun menerima nilai Int RGBA untuk mendukung transparansi:
Dan jika Anda ingin dapat menggunakannya dari string, Anda bisa menggunakan strtoul:
sumber
Berikut adalah
Swift 1.2
versi yang ditulis sebagai ekstensi untukUIColor
. Ini memungkinkan Anda melakukannyaYang saya rasakan adalah cara paling alami untuk melakukannya.
sumber
let greenRange = ...
saya mendapatkan pengecualian:fatal error: can not increment endIndex
Implementasi lain yang memungkinkan string menyukai
"FFF"
atau"FFFFFF"
dan menggunakan alpha:sumber
diperbarui untuk cepat 1.2
sumber
Buat ekstensi elegan untuk
UIColor
:Buat warna merah:
sumber
sumber
sumber
Saya ingin memastikan alfa selain warnanya, jadi saya menulis kategori saya sendiri
mudah digunakan seperti ini
sumber
Saya membuat kenyamanan untuk itu:
maka Anda dapat membuat UIColor di mana saja di proyek Anda seperti ini:
semoga ini membantu...
sumber
Anda dapat membuat kelas ekstensi UIColor sebagai: -
ekstensi UIColor {
// MARK: - getColorFromHex / ** Fungsi ini akan mengubah kode Hex warna menjadi RGB.
}
sumber
Untuk cepat 2.0+. Kode ini berfungsi dengan baik untuk saya.
Kode ini termasuk pemeriksaan format string. misalnya
Dan sejauh yang saya tahu, kode saya tidak ada salahnya untuk mempertahankan semantik kondisi gagal dan mengembalikan nilai opsional. Dan ini harus menjadi jawaban terbaik.
sumber
Solusi versi Swift 2.0 yang akan menangani nilai warna alfa dan dengan penanganan kesalahan yang sempurna ada di sini:
sumber
Pemakaian
sumber