UICollectionViewDiffableDataSource ChatLayout adalah solusi alternatif untuk MessageKit. Ini menggunakan UICollectionViewLayout khusus untuk memberikan Anda kontrol penuh atas presentasi serta semua alat yang tersedia di UICollectionView .
UICollectionView selama pembaruan. ChatLayout adalah UICollectionViewLayout khusus, jadi:
Anda tidak perlu memperluas atau mengganti UIViewController khusus atau UICollectionView . Anda perlu membuat mereka instantiasi dan menggunakannya seperti yang Anda suka.
ChatLayout tidak bergantung pada UICollectionViewFlowLayout yang dimodifikasi dan juga tidak memutar UICollectionView Anda terbalik. Ini berarti Anda dapat menggunakan pandangan Anda seolah -olah mereka akan menjadi sel biasa dalam UICollectionView . Anda dapat memperoleh manfaat dari menggunakan implementasi UIKit default dari adjustedContextInsets (dan lainnya) karena pengontrol tampilan Anda adalah pengontrol tampilan normal tanpa peretasan atau trik.
ChatLayout tidak mengharuskan Anda untuk menghitung semua ukuran sel sebelum membuatnya di layar. Anda dapat sepenuhnya menggunakan kendala lerai otomatis dan mengandalkan fakta bahwa ukuran yang benar akan dihitung dalam runtime. Namun, ChatLayout seperti UICollectionViewLayout lainnya akan mendapat manfaat dari Anda memberikan perkiraan ukuran sel Anda karena akan memungkinkan Anda untuk mendapatkan kinerja yang lebih baik.
ChatLayout tidak menegakkan Anda untuk menggunakan model data tertentu. Anda dapat menyimpan pesan Anda dan memperbarui UICollectionView seperti yang Anda suka. Satu -satunya hal yang Anda butuhkan adalah menghormati batas -batas alami yang dimiliki UICollectionView dan mengimplementasikan UICollectionViewDataSource dengan benar. Contoh aplikasi menggunakan DifferenceKit untuk memproses perubahan dalam model data.
ChatLayout tidak menegakkan Anda untuk menggunakan UIView S spesifik untuk membuat sel koleksi Anda. Anda dapat membuatnya seperti yang Anda suka. Ini bisa berupa UICollectionViewCell atau UICollectionReusableView . Ada beberapa UIView generik yang dibundel dengan perpustakaan yang dapat membantu Anda membangunnya lebih cepat. Namun, Anda tidak harus menggunakannya.
ChatLayout tidak menangani perilaku penampilan keyboard. Anda harus menerapkannya sendiri dari awal atau menggunakan perpustakaan yang sudah Anda gunakan dalam proyek Anda. Ini memberi Anda kontrol penuh atas presentasi keyboard. Satu -satunya hal yang harus Anda lakukan adalah memperbarui contentInsets dari UICollectionView Anda.
ChatLayout tidak memberi Anda kontrol input. Anda dapat menggunakan siapa pun yang Anda sukai dan menyesuaikannya sesuai keinginan Anda. Aplikasi contoh misalnya menggunakan inputBaraCestoryView.
Untuk menjalankan proyek contoh, klon repo, dan menjalankan pod install dari direktori contoh terlebih dahulu.
ChatLayout tersedia melalui Cocoapods, Carthage, dan Swiftpm. Lihat aplikasi Example untuk detail penggunaan.
Jika Anda menggunakan cocoapods, Anda dapat menginstal seluruh paket menggunakan pod 'ChatLayout' . Jika Anda tidak memerlukan komponen tambahan yang disediakan, Anda hanya dapat menginstal tata letak itu sendiri menggunakan pod 'ChatLayout/Core'
ChatLayout sedang dalam pengembangan aktif, dan kami menyambut kontribusi Anda.
Jika Anda ingin berkontribusi pada repo ini, silakan baca pedoman kontribusi.
UICollectionViewDiffableDataSource ChatLayout dapat memproses perintah pembaruan apa pun yang Anda kirim ke UICollectionView Anda, sehingga Anda dapat menggunakan UICollectionViewDiffableDataSource juga.
Ini bisa menggoda dan mungkin terlihat seperti cara yang tepat untuk pergi, tetapi tidak menggunakan pandangan tambahan untuk menghiasi pesan atau grup Anda. UICollectionView memprosesnya dalam urutan yang berbeda: UICollectionViewCell s Pertama dan hanya setelah beralih ke UICollectionReusableView s. Anda kemungkinan besar akan menghadapi beberapa perilaku yang tidak terduga selama animasi. Saya sangat menyarankan Anda untuk tidak menggunakan bagian sama sekali.
ChatLayout dapat digunakan bersama dengan tekstur untuk meningkatkan kinerja lerai otomatis. Tetapi perlu diingat bahwa pembungkus default hardcoded untuk bekerja secara eksklusif dengan UICollectionViewFlowLayout . Lihat masalah. Anda harus menerapkan ChatLayoutDelegate sendiri dan menyebarkan ukuran simpul secara manual.
Jika Anda melihat animasi yang aneh atau tidak terduga selama pembaruan, periksa model data Anda dan perintah yang Anda kirim ke UICollectionView 's performBatchUpdates . Terutama jika Anda menggunakan beberapa algoritma berbeda seperti DifferenceKit. Sangat mungkin bahwa Anda mengirim perintah hapus/masukkan ketika Anda berharap untuk melihat muat ulang. Cara termudah untuk memeriksanya adalah dengan menambahkan print("(updateItems)") ke dalam ChatLayout.prepare(forCollectionViewUpdates:) Metode. ChatLayout tidak tahu apa yang Anda harapkan. Ini hanya memproses perubahan Anda sesuai dengan perintah yang telah diterima.
Header atau footer lengket tidak didukung oleh ChatLayout tetapi kontribusi Anda diterima.
ChatLayout didistribusikan di bawah lisensi MIT.
ChatLayout disediakan untuk penggunaan Anda, gratis, berdasarkan apa adanya. Kami tidak membuat jaminan, janji, atau permintaan maaf. Pengembang peringatan.
Bahasa inggris:
Rusia:
Jika Anda menemukan perpustakaan ini bermanfaat, dan terutama jika Anda menggunakannya dalam produksi, silakan pertimbangkan untuk mensponsori proyek ini di sini. Saya bekerja di ChatLayout di waktu luang saya, dan sponsor Anda akan membantu saya untuk terus mengembangkan dan berkontribusi pada komunitas open source. Dukungan Anda akan memungkinkan saya untuk mendedikasikan lebih banyak waktu dan sumber daya untuk proyek ini, memastikan bahwa itu tetap terkini dan relevan untuk tahun-tahun mendatang.
Terima kasih atas pertimbangannya!
Evgeny Kazaev, [email protected]. Twitter Ekazaev
Saya senang menjawab pertanyaan yang mungkin Anda miliki. Cukup buat masalah baru.