Bagikan melalui


Api Penampilan di Xamarin.iOS

iOS memungkinkan Anda menerapkan pengaturan properti visual pada tingkat kelas statis daripada pada objek individual sehingga perubahan berlaku untuk semua instans kontrol tersebut dalam aplikasi.

Fungsionalitas ini diekspos di Xamarin.iOS melalui properti statis Appearance pada semua kontrol UIKit yang mendukungnya. Tampilan visual (properti seperti warna warna dan gambar latar belakang) oleh karena itu dapat dengan mudah disesuaikan untuk memberi aplikasi Anda tampilan yang konsisten. Appearance API diperkenalkan di iOS 5 dan sementara beberapa bagiannya telah ditolak di iOS 9, ini masih merupakan cara yang baik untuk mencapai beberapa efek gaya dan tema di aplikasi Xamarin.iOS.

Gambaran Umum

iOS memungkinkan Anda menyesuaikan tampilan banyak kontrol UIKit untuk membuat kontrol standar sesuai dengan merek yang ingin Anda terapkan ke aplikasi Anda.

Ada dua cara berbeda untuk menerapkan tampilan kustom:

  • Langsung pada instans kontrol – Anda dapat mengatur warna warna, gambar latar belakang, dan posisi judul (serta beberapa atribut lainnya) pada banyak kontrol termasuk toolbar, bilah navigasi, tombol, dan penggerak.

  • Atur default pada properti statis Tampilan – atribut yang dapat disesuaikan untuk setiap kontrol diekspos melalui Appearance properti statis. Kustomisasi apa pun yang Anda terapkan ke properti ini akan digunakan sebagai default untuk kontrol apa pun dari jenis tersebut yang dibuat setelah properti diatur.

Aplikasi sampel Tampilan menunjukkan ketiga metode, seperti yang ditunjukkan pada cuplikan layar ini:

Aplikasi sampel Tampilan menunjukkan ketiga metode

Pada iOS 8, proksi Tampilan telah diperluas ke TraitCollections. AppearanceForTraitCollection dapat digunakan untuk mengatur tampilan default pada koleksi sifat tertentu. Anda dapat membaca lebih lanjut tentang ini di panduan Pengantar Papan Cerita .

Mengatur Properti Tampilan

Di layar pertama, kelas Tampilan statis digunakan untuk menata tombol dan elemen kuning/oranye seperti ini:

// Set the default appearance values
UIButton.Appearance.TintColor = UIColor.LightGray;
UIButton.Appearance.SetTitleColor(UIColor.FromRGB(0,127,14), UIControlState.Normal);

UISlider.Appearance.ThumbTintColor = UIColor.Red;
UISlider.Appearance.MinimumTrackTintColor = UIColor.Orange;
UISlider.Appearance.MaximumTrackTintColor = UIColor.Yellow;

UIProgressView.Appearance.ProgressTintColor = UIColor.Yellow;
UIProgressView.Appearance.TrackTintColor = UIColor.Orange;

Gaya elemen hijau diatur seperti ini, dalam ViewDidLoad metode yang mengambil alih nilai default dan kelas statis Tampilan :

slider2.ThumbTintColor = UIColor.FromRGB (0,127,70); // dark green
slider2.MinimumTrackTintColor = UIColor.FromRGB (66,255,63);
slider2.MaximumTrackTintColor = UIColor.FromRGB (197,255,132);
progress2.ProgressTintColor = UIColor.FromRGB (66,255,63);
progress2.TrackTintColor = UIColor.FromRGB (197,255,132);

Menggunakan UIAppearance dalam Xamarin.Forms

Api Tampilan dapat berguna saat menata aplikasi iOS di solusi Xamarin.Forms. Beberapa baris di AppDelegate kelas dapat membantu menerapkan skema warna tertentu tanpa harus membuat perender kustom.

Tema Kustom dan UIAppearance

iOS memungkinkan banyak atribut visual kontrol antarmuka pengguna untuk "bertema" menggunakan API UIAppearance untuk memaksa semua instans kontrol tertentu memiliki tampilan yang sama. Ini diekspos sebagai properti Tampilan pada banyak kelas kontrol antarmuka pengguna, bukan pada instans kontrol individual. Mengatur properti tampilan pada properti statis Appearance memengaruhi semua kontrol jenis tersebut dalam aplikasi Anda.

Untuk lebih memahami konsep, pertimbangkan contohnya.

Untuk mengubah spesifik UISegmentedControl untuk memiliki warna Magenta, kami akan mereferensikan kontrol spesifik pada layar kami seperti ini di ViewDidLoad:

sg1.TintColor = UIColor.Magenta;

Atau, tetapkan nilai di pad Properti Perancang:

Tint Pad Properti

Gambar di bawah ini menggambarkan bahwa ini mengatur warna hanya pada kontrol bernama 'sg1'.

Mengatur warna kontrol individual

Untuk mengatur banyak kontrol dengan cara ini akan benar-benar tidak efisien, jadi kita dapat mengatur properti statis Appearance pada kelas itu sendiri. Ini ditunjukkan dalam kode di bawah ini:

UISegmentedControl.Appearance.TintColor = UIColor.Magenta;

Gambar di bawah ini sekarang mengilustrasikan kedua kontrol tersegmentasi dengan tampilan diatur ke Magenta:

Mengatur warna kontrol Tampilan

Appearance properti harus diatur lebih awal dalam siklus hidup aplikasi, seperti dalam peristiwa AppDelegate FinishedLaunching , atau dalam ViewController sebelum kontrol yang terpengaruh ditampilkan.

Lihat Pengenalan API Tampilan untuk informasi lebih rinci.