Pertanyaan UIImage terlihat berbeda ketika digunakan di iOS


Saya mengalami masalah dengan png gambar, yang salah warna di iOS dibandingkan dengan gambar yang sebenarnya.

Tidak masalah bagaimana saya menggunakan gambar, selalu mendapatkan warna yang salah. Saya telah mencoba UIButton dan UIImageView dan itu memberi hasil yang sama.

Ini adalah penggunaan standar yang sangat standar UIImage:

UIImage* greenButtonImg = [UIImage imageNamed:@"btn_green"];
UIImageView* testView = [[UIImageView alloc] initWithImage:greenButtonImg];
[self.view addSubview:testView];

Gambar kedua adalah tampilannya di iOS dan tombol pertama adalah tampilannya di Mac saya (Finder dan Photoshop):

First button is as the image looks on the Mac, second image is as the image look on iOS

Seperti yang Anda lihat tombol kedua memiliki warna hijau yang berbeda. Ini terjadi di seluruh aplikasi di mana saya menggunakan gambar ini. Itu terjadi di Simulator dan di iPhone 5.

Apa yang dapat menyebabkan masalah ini? Bisakah ini disebabkan oleh pengaturan di Photoshop, di mana gambar itu dibuat?


4
2017-10-16 08:50


asal


Jawaban:


Seperti Jeff menulis dalam komentar itu masalah dengan Profil RGB.

Saya berhasil memperbaiki masalah dengan mengubah profil warna di Photoshop:

Edit -> Convert to Profile... -> Set profile to "Apple RGB"


3
2017-10-16 09:36



Di iOS 7.0, gambar diwarnai dengan bilah alat tintColor.

Di iOS 7.0, semua subclass dari UIView mendapatkan perilaku mereka untuk tintColor dari kelas dasar.

Secara default, gambar (UIImage) dibuat dengan UIImageRenderingModeAutomatic.

Jika Anda memiliki UIImageRenderingModeAutomatic ditetapkan pada gambar Anda, itu akan diperlakukan sebagai template atau aslinya berdasarkan konteksnya.

Tertentu UIKit elemen — termasuk bilah navigasi, bilah tab, bilah alat, kontrol tersegmentasi — secara otomatis memperlakukan gambar latar depan sebagai kerangka, meskipun gambar latar belakangnya dianggap asli.

Elemen lain — seperti tampilan gambar dan tampilan web — memperlakukan gambar mereka sebagai gambar asli. Jika Anda ingin gambar Anda selalu diperlakukan sebagai template tanpa konteks, atur UIImageRenderingModeAlwaysTemplate.

Jika Anda ingin gambar Anda selalu diperlakukan sebagai asli, atur UIImageRenderingModeAlwaysOriginal.

Lihat Gambar Template untuk info lebih lanjut.


1
2017-10-16 17:00