Ini hanya didukung di iOS 5.0 atau yang lebih baru.
Jon Trauntvein
3
Berhati-hatilah bahwa metode ini hanya akan berhasil jika warna awal berada dalam "ruang warna yang kompatibel", yang dapat bervariasi bergantung pada perangkat / OS. Misalnya, saya baru saja menemukan bahwa memanggil ini di [UIColor darkGrayColor] akan gagal di iPad 2 yang menjalankan iOS 7. Namun warna yang sama berfungsi dengan baik di iPad Air yang menjalankan iOS 8.
devios1
@ devios1 Hal ini mungkin dapat diselesaikan dengan membuat serialisasi warna terlebih dahulu kemudian deserialisasi menggunakan NSKeyedArchiver, seperti:multipliedColor = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject: multipliedColor]];
Albert Renshaw
40
SWIFT 3 & 4
Saya menemukan bahwa cgColor.components tidak selalu mengembalikan 4 nilai warna, jadi saya mengubahnya sehingga mendapatkannya dari pembungkus CIColor
apakah itu tidak menghasilkan peringatan untuk mencoba secara implisit melemparkan CGFloat ke float? :)
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];
Sejak iOS 2.0, ada metode instance pribadi yang UIColordipanggil styleStringyang mengembalikan representasi string RGB atau RGBA dari warna, bahkan untuk warna seperti whiteColor di luar ruang RGB.
Di Swift Anda bisa menggunakan header penghubung untuk mengekspos antarmuka. Dengan Swift murni, Anda perlu membuat @objcprotokol dengan metode privat, dan unsafeBitCastUIColordengan protokol:
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
Ada juga opsi serupa untuk mendapatkan hsbanilai :
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
Cukup instal menggunakan Carthage dan Anda siap melakukannya.
Jawaban:
Tautan ini memberikan detail lebih lanjut:
sumber
colors
, Anda dapat menulis sesuatu seperti,CGFloat red = colors[0];
error: <EXPR>:3:1: error: 'CGColorGetComponents' has been replaced by property 'CGColor.components'
Di iOS 5 Anda dapat menggunakan:
sumber
NSKeyedArchiver
, seperti:multipliedColor = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject: multipliedColor]];
SWIFT 3 & 4
Saya menemukan bahwa cgColor.components tidak selalu mengembalikan 4 nilai warna, jadi saya mengubahnya sehingga mendapatkannya dari pembungkus CIColor
SWIFT 2
Ini bukan cara yang paling efisien jadi saya tidak akan menggunakan ini di mana tampilan akan terus digambar ulang.
sumber
Semoga bermanfaat
sumber
Baru saja membuat kategori untuk ini.
Itu seperti:
Bagian dari
eppz!kit
dengan lebih banyak barang UIColor .sumber
Terima kasih. Saya harus menambahkan
const
di awal baris karena itu menghasilkan peringatan.sumber
sumber
Jawaban David Rees versi Swift 3:
sumber
Anda dapat menggunakan komponen CIColor (swift 5)
ini juga berfungsi untuk ruang warna non-RGB
sumber
Sejak iOS 2.0, ada metode instance pribadi yang
UIColor
dipanggilstyleString
yang mengembalikan representasi string RGB atau RGBA dari warna, bahkan untuk warna seperti whiteColor di luar ruang RGB.Objective-C:
Di Swift Anda bisa menggunakan header penghubung untuk mengekspos antarmuka. Dengan Swift murni, Anda perlu membuat
@objc
protokol dengan metode privat, danunsafeBitCast
UIColor
dengan protokol:sumber
Jawaban pilihan teratas sudah usang:
Sebagai gantinya, gunakan
myUIColor.cgColor.components
sumber
Saya ingin mendapatkan warna latar belakang
UITableViewStyle
"UITableViewStyleGrouped" jadi dalamviewDidAppear:
metode saya menambahkan kode:NSLog(@"%@", self.tableView.backgroundView.backgroundColor);
Itu melakukan apa yang saya antisipasi dan mengembalikan log:
UIDeviceRGBColorSpace 0.937255 0.937255 0.956863 1
Jadi singkatnya ketik saja
NSLog(@"%@", [UIColor whateverColor]);
sumber
Menggunakan HandyUIKit membuatnya sangat mudah :
Ada juga opsi serupa untuk mendapatkan
hsba
nilai :Cukup instal menggunakan Carthage dan Anda siap melakukannya.
Saya harap ini membantu!
sumber
Beberapa makro berguna yang saya buat untuk ini dan kontrol warna lainnya:
Dalam kasus Anda, Anda hanya akan menggunakan
Makro:
sumber
atur UIColor Anda seperti ini
ini untuk Xamarin ios ... tetapi yang pasti ada metode seperti ini dengan cepat.
sumber