Jenis Dinamis itu baik, tetapi tidak selalu berhasil. Sekarang saya akan memberi tahu Anda bagaimana kontrol kecil di iOS 13 meningkat secara gratis, tanpa registrasi dan SMS.
Pada
artikel sebelumnya, kami menarik jenis dynamik pada menu aplikasi Dodo Pizza iOS. Ternyata cukup baik. Tetapi bilah tab di bawah menu sekecil itu - itu tidak berubah tergantung pada pengaturan ukuran teks.
Fitur ini belum mencapai rilis, yang membuat saya malu dan malu"Tapi bagaimana, Dodo?" Apakah Anda tidak peduli dengan orang-orang tunanetra?
- Maaf!
Sedikit tentang mode bawaan "Magnifier"
Bilah tab sistem menampilkan pratinjau setiap tab dengan ketukan panjang. Cobalah untuk memasukkan ukuran teks "tersedia", dan kemudian tekan lama pada tab mana saja di tab sistem (misalnya, di Musik atau di Foto). Munculan berikut akan muncul di layar:
Selain tabbar, mode "kaca pembesar" didukung oleh tombol di navbars dan toolbar:
Bidang Pencarian:
Dan beberapa kontrol lagi.
Dan, dimulai dengan iOS 13, kita dapat dengan mudah menambahkan perilaku yang sama ke kontrol kita.
Cara mempercepat UILargeContentViewerItem ke aplikasi
Sayangnya, protokol ini dijelaskan dengan buruk dalam dokumentasi, tetapi ini tidak masalah, karena APInya terlihat sangat sederhana:
@available(iOS 13.0, *) public protocol UILargeContentViewerItem : NSObjectProtocol { var showsLargeContentViewer: Bool { get } var largeContentTitle: String? { get } var largeContentImage: UIImage? { get } var scalesLargeContentImage: Bool { get } var largeContentImageInsets: UIEdgeInsets { get } }
Cukup menerapkan beberapa metode ini, nama-nama yang berbicara sendiri, dan kontrol Anda akan menampilkan pratinjau besar di ketukan panjang.
Implementasinya sangat sederhana
Mari kita coba protokol ini pada beberapa tombol di aplikasi. Misalnya, pada tombol
i
di kartu produk:
Tambahkan 3 baris kode:
nutritionButton.showsLargeContentViewer = true nutritionButton.addInteraction(UILargeContentViewerInteraction()) nutritionButton.largeContentTitle = nutritionButton.accessibilityValue
Selesai Keren ya
Hanya di sini adalah ikon genap, yang ditarik secara default, saya tidak suka. Akan lebih baik jika tidak dua warna, tetapi satu warna dengan bentuk potongan huruf
i
. Ini hanya digunakan untuk status tombol .highlighted.
nutritionButton.largeContentImage = nutritionButton.image(for: .highlighted)
Norma
Dan sekarang mari kita akhiri dalam ekstensi:
extension UIView { public func enableLargeContent(title: String? = nil, image: UIImage? = nil, scales: Bool = true, insets: UIEdgeInsets = .zero) { guard !showsLargeContentViewer else { return } showsLargeContentViewer = true addInteraction(UILargeContentViewerInteraction()) largeContentTitle = title largeContentImage = image scalesLargeContentImage = scales largeContentImageInsets = insets } }
nutritionButton.enableLargeContent(title: nutritionButton.accessibilityValue, image: nutritionButton.image(for: .highlighted))
Bahkan, banyak kontrol ios standar sudah menerapkan beberapa metode protokol ini. Dan mode ini dimatikan, karena Anda perlu mencoba untuk benar-benar meningkatkan konten, daripada menyembunyikan segala sesuatu di balik kaca pembesar.
Saya ulangi: gunakan fitur ini hanya sebagai pilihan terakhir, ketika Anda benar-benar tidak dapat meningkatkan kontrol sama sekali.
Dokumentasi untuk semua ini tersedia dalam Xcode jika Anda membuka antarmuka UILargeContentViewerItem
.
Proyek demo di
repo saya
di GitHub