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:
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:
Gambar di bawah ini menggambarkan bahwa ini mengatur warna hanya pada kontrol bernama 'sg1'.
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:
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.