Protokol penampilan UIA muncul di iOS 5 pada 2011, pada saat-saat yang jauh ketika Instagram tidak memiliki aplikasi Android, dan serial Ned Stark belum terputus.
Tentang EddardPara master mengirimi saya burung gagak dengan berita bahwa pada saat rilis iOS 5, mereka telah dipotong. Tapi agar tidak merusak pernikahan merah atau yang lainnya, mungkin aku akan meninggalkan semuanya apa adanya.
Ada cukup informasi, tutorial, artikel tentang topik ini, setiap pengembang iOS pemula tahu bagaimana dan mengapa menggunakannya, jadi artikel ini bukan tentang itu. Saya ingin merefleksikan topik apa yang salah dengannya, dan mengapa Apple tidak memperhatikannya.
Sebagai pengantar kecil, kutipan dari dokumentasi yang selalu, adalah dan harus menjadi sumber informasi tepercaya.
Anda dapat menyesuaikan tampilan instance kelas dengan mengirimkan pesan modifikasi penampilan ke proksi penampilan kelas.
Untuk mendukung penyesuaian tampilan, suatu kelas harus mematuhi protokol UIAppearanceContainer dan metode pengaksesor yang relevan harus ditandai dengan UI_APPEARANCE_SELECTOR
Bagi saya sendiri, saya memahaminya seperti ini: jika Anda ingin mengubah tampilan default untuk semua objek kelas yang mengimplementasikan UIAppearance , periksa apakah properti ditandai dengan UI_APPEARANCE_SELECTOR , dan pergi. Karena itu, jika properti bukan UI_APPEARANCE_SELECTOR , maka ini tidak akan berfungsi.
Tetapi "tidak berhasil" tidak berarti "Anda tidak bisa mencoba," jadi saya menyarankan agar semua orang ingin melakukan eksperimen sederhana: buka proyek pertama yang Anda dapatkan dan tambahkan baris berikut ke application:didFinishLaunchingWithOptions:
metode:
UIView.appearance().isHidden = true
Perkirakan apa yang akan terjadi dan dijalankan.
Saya, seperti membosankan, akan mengharapkan opsi yang memungkinkan:
- tidak ada yang terjadi;
- tidak ada yang terjadi, tetapi log seperti "isHidden bukan UI_APPEARANCE_SELECTOR, bodoh" jatuh ke konsol;
- Aplikasi menangkap kesalahan kritis atau menegaskan dengan pesan serupa.
Tapi tidak, semuanya, termasuk jendela aplikasi utama, menjadi tersembunyi. Di satu sisi, itu bahkan logis - apa yang ditulis sudah selesai. Tetapi di sisi lain, kelihatannya seperti perilaku tidak berdokumen dan, menurut saya, lubang yang agak besar seperti itu.
Saya masih bisa menerima kenyataan bahwa jika trik seperti itu hanya dapat diputar dengan properti yang memengaruhi penampilan, tetapi ini dapat dilakukan dengan semua properti !
Misalnya, menambahkan kode yang digunakan proyek lain sebagai pustaka pihak ketiga, berikut ini adalah baris yang kadang-kadang dipanggil secara acak:
UITableView.appearance().delegate = nil
Anda dapat mengatur ulang semua delegasi ke semua tabel yang muncul di layar setelah kode ini dijalankan.
Pengembang akan bersenang-senang mencoba mencari tahu apa yang terjadi! Tentunya, Anda dapat membuat sesuatu yang bahkan lebih menyenangkan!
Saya benar-benar berharap hal-hal seperti itu tidak luput dari perhatian oleh Apple (saya tidak menemukan informasi mengenai topik ini), dan trik-trik semacam itu diungkapkan di suatu tempat pada tahap verifikasi perakitan otomatis di AppstoreConnect. Tapi jujur saja, saya tidak ingin memeriksanya.
Hal-hal seperti itu kawan. Saya akan senang untuk membahas jika seseorang juga tertarik dengan topik tersebut.
PS Kembalikan 2011 saya!