Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. iOS SDK

Seperti batu loncatan Layout dengan kelas UICollectionView

by
Read Time:22 minsLanguages:

Indonesian (Bahasa Indonesia) translation by Keti Pritania (you can also view the original English article)

Tutorial ini akan mengajarkan Anda bagaimana menggunakan iOS 6 UICollectionView kelas untuk membangun sebuah layout "Batu loncatan" yang terlihat dan bertindak seperti iOS Home layar! Sepanjang jalan, Anda akan mendapatkan pemahaman yang solid tentang koleksi view fundamental untuk menciptakan layout berbasis grid Anda sendiri.


Proyek Tinjauan


Koleksi lihat Ikhtisar

Koleksi pandangan adalah tambahan baru yang menarik untuk API UIKit di iOS 6. Beberapa pakar platform yang berpendapat bahwa koleksi pemandangan yang siap untuk menjadi sebagai dasar dan meresap komponen di iOS aplikasi desain sebagai pemandangan meja telah (dan penulis Anda dengan rendah hati cenderung untuk setuju!). Koleksi pandangan dan pemandangan meja berbagi banyak filosofi desain umum (untuk tidak menyebutkan API sama) karena mereka melayani tujuan yang sama - untuk menyajikan koleksi data terkait. Lebih baik untuk tidak berpikir dari koleksi dilihat sebagai pengganti untuk meja dilihat, tetapi sebagai persembahan arsitektur yang lebih generik dan fleksibel untuk berinteraksi dengan bebas-tabel data set baru.

Karena koleksi pemandangan dimaksudkan untuk menjadi fleksibel, extensible dan mudah dikonfigurasi, arsitektur dan karenanya API mungkin tampak sedikit menakutkan pada awalnya. Ada sejumlah kelas berinteraksi yang perlu tahu tentang. Tergantung pada bagaimana sederhana atau kompleks yang kebutuhan Anda, Anda mungkin perlu untuk subclass beberapa kelas-kelas ini untuk mencapai hasil yang Anda inginkan. Untungnya, API dirancang dari tanah untuk membantu dengan itu. Kita akan melihat beberapa contoh-contoh konkret ini kemudian dalam tutorial.

Mari kita mulai dengan ikhtisar singkat kelas utama dalam kerangka lihat koleksi. Dalam koleksi pandangan dunia, sebuah unit beton data visual dirumuskan oleh sebuah instance UICollectionViewCell. Kelas UICollectionView menyediakan wadah digulir yang memegang koleksi sel. Sementara tampilan koleksi menyadari posisi sel, visibilitas mereka (atau ketiadaan) ini tidak benar-benar tanggung jawab kelas. Tanggung jawab menangani tata letak jatuh pada bahu kelas UICollectionViewLayout. Dengan beralih tata letak kelas untuk koleksi pandangan yang sama, kita dapat menyebabkan data yang sama yang akan ditampilkan dalam cara yang berbeda secara dramatis.

Berbicara tentang unsur-unsur visual, selain sel-sel ada adalah dua lainnya: pandangan tambahan dan pemandangan dekorasi. Data yang ditampilkan dapat diorganisasikan secara logis menjadi bagian, dan pemandangan tambahan dapat digunakan untuk memasok section-wise "metadata" (berpikir header dan footer dalam tampilan tabel). Di sisi lain, dekorasi pandangan "hias" daripada data-driven: Pikirkan latar belakang rak buku di iBooks app. Tentu saja, saya baru saja disebutkan ini demi kelengkapan. UI untuk proyek ini tutorial akan terdiri seluruhnya dari unsur-unsur sel dan tidak akan ada setiap bagian.

UICollectionViewLayout tidak dibatasi untuk jenis tertentu tata letak, tetapi kapal-kapal dengan sebuah subclass, UICollectionViewFlowLayout, yang telah dirancang untuk membangun jalur dan layout grid berbasis.

Seperti pemandangan Meja, pandangan koleksi berinteraksi dengan data yang mendasarinya melalui sumber data dan menanggapi peristiwa UI dengan bantuan delegasi.

Kelas tata letak dapat mengatur tata letak dalam beberapa cara - dengan menetapkan sifat global pada sel-sel atau melalui delegasi. Yang terakhir endows kelas tata letak dengan halus kendali dari penampilan UI.

Tentu saja ada beberapa kelas lain akan disebutkan, dan aku akan datang kepada mereka kemudian.


Pendekatan tutorial

Mari kita bicara tentang penampilan pertama: dalam tutorial ini, kita akan menciptakan UI yang terlihat seperti iPhone iPad layar home (juga disebut dengan batu loncatan). Ini akan terdiri dari grid digulir ikon. Menggesekkan kiri atau kanan akan menampilkan halaman baru ikon. Sama seperti batu loncatan, antarmuka akan memiliki latar belakang statis ("wallpaper") di balik itu. Tidak hanya itu, kami juga akan menerapkan ikon penghapusan: panjang-menekan salah satu ikon akan memicu modus penghapusan. Ikon akan kemudian mulai gemetar (dari rasa takut yang dihapus!), dan tombol tutup akan hadir sendiri pada masing-masing. Mengklik pada yang akan menyebabkan ikon menghilang dari grid. Mengklik ikon sendiri modally akan menyajikan pandangan baru yang dapat diberhentikan dengan tombol untuk membawa kembali pandangan kami Dewan musim semi.

Di belakang layar, UI ini didukung model sangat sederhana data (yang kami akan memperkenalkan segera). Hal ini sehingga kita dapat berkonsentrasi pada pelaksanaan antarmuka, dengan minimal kompleksitas ditambahkan dilemparkan pada akhir "model" arsitektur MVC. Ikon akan menampilkan bagian dari data (seperti sel-sel lakukan di meja dilihat) dan tampilan yang ditunjukkan pada modally saat mengklik ikon apapun akan hadir sisa data kita.


Sebuah implementasi Barebones

Karena ini adalah pertama kalinya kami sedang merancang tata letak pemandangan koleksi (mungkin), sangat mudah untuk mendapatkan sibuk dengan banyak benda-benda berinteraksi dan kehilangan gambaran yang lebih besar. Untuk menghindari hal ini, saya ingin menendang hal off dengan implementasi yang minimalis yang masih memenuhi persyaratan kami penting dari sebuah grid berbasis layout bergulir, dan kemudian mengeksplorasi bagaimana kita dapat memanfaatkan kekuatan kerangka lihat koleksi untuk memoles UI kami dan memperkenalkan baru fitur.

Api up Xcode, membuat proyek baru dengan "Template kosong" (kita akan melakukan segala sesuatu dalam kode untuk tutorial ini) dan menyebutnya "SpringBoardLayoutTut". Pastikan itu adalah proyek iPad, dan bahwa ARC diaktifkan.

New projectNew projectNew project

Hapus semua mode kecuali potret dari "Didukung antarmuka orientasi".

Portrait modePortrait modePortrait mode

Ganti semua kode di AppDelegate.m dengan berikut:

Membangun aplikasi. Anda harus mendapatkan antarmuka (sangat) dasar grid.

Very basic grid UIVery basic grid UIVery basic grid UI

Kode di atas hanya dimaksudkan untuk menggambarkan bahwa tata letak dasar kotak tersedia cukup banyak out-of-the-box dengan kelas UICollectionViewFlowLayout. Hal ini tidak dimaksudkan untuk menggambarkan bagaimana Anda benar-benar akan struktur kode Anda; Itulah yang seluruh tutorial untuk!

Jika Anda tahu pandangan meja Anda, banyak kode di atas harus tampak akrab.

Kami akar Lihat controller adalah instance dari UICollectionViewController, yang datang dengan contoh UICollectionView sebagai pemandangan, dan, secara default, diatur untuk menjadi sumber data tampilan koleksi dan mendelegasikan. Kami mendaftar kelas UICollectionViewCell dengan koleksi tampilan controller dan memberikannya sebuah identifier. UICollectionViewCell dimaksudkan untuk menjadi subclassed, seperti yang kita akan segera, itulah sebabnya langkah pendaftaran identifikasi yang diperlukan. Kami juga membuat sebuah instance dari UICollectionViewFlowLayout, sebagai pandangan koleksi kami tata letak, dan menetapkan beberapa properti di atasnya mendefinisikan bagaimana sel-sel kita akan ukuran dan diposisikan di grid. Kami "data" hanya terdiri dari seratus bilangan bulat. Perhatikan akrab sel dequeuing langkah dari tampilan tabel, yang mendaur ulang sel-sel yang telah dipindahkan off-layar untuk menghemat memori dan sel penciptaan. Tidak seperti di iOS 5, - dequeueReusableCellWithReuseIdentifier: metode secara otomatis kembali sel baru jika tidak ada dalam antrian kembali. Ketika sel karena muncul di layar, label yang melekat yang menampilkan salah satu nomor dari daftar integer kami. Mengklik pada sel hanya memberikan pengakuan dalam bentuk log pesan.

Untuk mengulangi, titik kode di atas adalah hanya untuk menunjukkan bahwa layout dasar grid sangat mudah untuk mencapai dengan pemandangan koleksi dan aliran tata letak kelas.

Sisa tutorial terfokus pada membuat tampilan UI yang cantik, serta lebih interaktif dan fungsional.


Membuat Model Data sederhana

Mari kita turun ke bisnis. Kita akan mulai dengan membuat model data sangat sederhana, yang terdiri dari array yang berisi nama-nama semua keluarga font yang diinstal pada iOS, dan kamus yang mengandung font sendiri, mengetik dengan keluarga mereka masing-masing font.

Membuat subclass NSObject yang disebut SimpleModel dan mengganti isi SimpleModel.h dan SimpleModel.m dengan berikut:


Menyesuaikan ikon

Urutan bisnis kami kedua adalah untuk subclass UICollectionViewCell untuk membuat ikon kami terlihat lebih seperti, Yah, ikon!

Tambahkan kerangka QuartzCore untuk proyek Anda. Kita memerlukan ini karena kami akan memutar-mutar dengan sifat CALayer dan menghidupkan mereka.

Adding the QuartzCore frameworkAdding the QuartzCore frameworkAdding the QuartzCore framework

Buat sebuah file baru Objective-C, membuat sebuah subclass UICollectionViewCell dan menyebutnya ikon. Ganti kode di file Icon.h dan Icon.m dengan berikut:

Sel-sel ikon konten melihat sisipan dengan suatu pandangan yang sedikit lebih kecil (ditambahkan sebagai subview) yang berfungsi untuk menahan kami contoh UILabel yang merupakan fitur utama terlihat ikon kami. Alasan untuk menggunakan inset subview sehingga kita dapat kemudian menambahkan sebuah tombol delete yang secara visual melampaui batas-batas label (sehingga terlihat keren) belum terletak dalam batas-batas tampilan konten tidak terlihat (karena membuat kontrol mendaftar menyentuh ketika rec batas yang kusut terletak di luar pandangan orang tua yang agak sedikit rumit dan kami ingin menghindari hal itu).

Aku sudah berkomentar keluar beberapa hal yang bukan bagian dari aplikasi kami seperti saat ini berdiri. Saya akan meminta Anda untuk tanda komentar mereka nanti. Selain itu, kami akan mengisi kode dimanapun dikatakan / / menyisipkan... POTONGAN DI SINI. Saya telah melakukan hal-hal dengan cara ini sehingga kita dapat bekerja pada aplikasi kami semakin bukannya mendapatkan macet dengan semua rincian sekaligus.


Menyesuaikan tata letak

Membuat file kelas Objective-C baru, membuat sebuah subclass UICollectionViewFlowLayout dan nama SpringboardLayout. Ganti kode dalam SpringboardLayout.h dan SpringboardLayout.m dengan berikut:


Membuat View Controller

Membuat file kelas Objective-C baru. Panggilan kelas ViewController dan membuat sebuah subclass dari UICollectionViewController. Ganti kode dalam ViewController.m dengan berikut:


Mengkonfigurasi delegasi App

Kita sudah hampir siap untuk membangun versi baru dan perbaikan antarmuka kami.

Menambahkan dua gambar berikut untuk proyek Anda: satu gambar, dua gambar. Mereka akan berfungsi sebagai latar belakang kami batu loncatan-seperti antarmuka (Terima kasih kepada Fabio www.999wallpapers.com untuk bermurah hati membiarkan saya menggunakan mereka!).

Ganti isi AppDelegate.m dengan kode berikut yang menciptakan dan mengkonfigurasi tampilan controller dan menetapkan untuk tata letak yang:

Membangun aplikasi. UI harus memiliki tampilan dan perilaku yang lebih canggih.

A better looking UIA better looking UIA better looking UI

Rekap singkat - dan memandang ke depan

Mari kita mengambil langkah mundur dan meninjau apa yang telah kami lakukan sejauh ini, dan bagaimana kami telah menulis kode diterjemahkan persyaratan dalam rangka.

Kami menciptakan kelas ikon yang tahu Bagaimana Menggambar itu sendiri, dan memiliki label yang kita dapat mengisi dengan data kami. Rincian tata letak kami dikelola oleh SpringboardLayout kelas, yang kami subclassed dari UICollectionViewLayout, yang ditujukan untuk membangun jalur atau grid berbasis layout. Saat ini, jika Anda membuat pengamatan bahwa kita tidak benar-benar perlu untuk subclass kelas UICollectionViewFlowLayout seperti yang kita belum benar-benar diperpanjang perilaku dengan cara apapun, hanya sedikit dari sifat, Yah, Anda akan memukul pada! Karena sel-sel kita identik secara visual, kita bisa lolos dengan hanya menetapkan beberapa sifat global pada kelas tata letak untuk mendapatkan pengaturan grid-seperti yang kita inginkan, dan - jika semua yang kami ingin - kita bisa melakukan itu pada contoh UICollectionViewFlowLayout itu sendiri (seperti yang kita lakukan pertama kali ' putaran). Kami telah subclassed UICollectionViewFlowLayout dalam mengantisipasi fungsi yang kami akan menambahkan ke UI kami segera.

Pada titik ini, saya akan menyebutkan bahwa jalan lain lewat informasi untuk tata letak adalah melalui delegasi. Ini akan sangat berguna jika kita ingin sel-sel kita untuk memiliki ukuran yang berbeda, misalnya, atau jika kami memiliki beberapa bagian di UI kami dan kami ingin melihat sedikit berbeda untuk setiap bagian.

Presentasi data aktual menggunakan akrab data sumber dan delegasi mekanisme yang kita kenal dan cinta dari tabel dilihat. UICollectionViewController contoh tindakan karena keduanya secara default. Lihat koleksi menentukan jumlah sel-sel yang berisi dan isi dari setiap sel oleh query sumber data, dan menginformasikan delegasi ketika pengguna keran pada sel sehingga ia bisa merespons dengan tepat. Dalam contoh kita, kita menanggapi oleh instantiating dan modally menyajikan tampilan controller yang menampilkan daftar dari wajah font yang sesuai font keluarga dalam sel diklik.

Sekarang, mari kita mempertimbangkan tujuan kami berikutnya, dan melanjutkan untuk mengatur kode kita sehingga masing-masing kelas dalam rangka melaksanakan tanggung jawab ini telah dirancang untuk, tidak lebih dan tidak kurang.


Melaksanakan penghapusan Mode

Dalam Icon.h, tanda komentar baris:

Di Icon.m, dan tanda komentar:

Kemudian masukkan blok kode berikut pada tempat yang layak:

Kita bisa termasuk tombol tutup kami sebagai gambar bitmap dengan kami app tapi karena itu cukup sederhana untuk membuat sebagai vektor grafis dengan UIBezierPath (yang kita kemudian mengkonversi ke bitmap), kami telah melakukan yang sebaliknya. Salah satu keuntungan dari pendekatan ini (yaitu menciptakan vektor jalan dan kemudian rasterizing) adalah bahwa kita tidak perlu khawatir tentang menyediakan beberapa gambar untuk perangkat pada resolusi yang berbeda.

Mari kita membuat metode target-tindakan untuk tombol kami tutup.

Dalam ViewController.m, menyisipkan potongan kode berikut:

dan

Pada dasarnya, animasi kami menyebabkan ikon kami Rock (gelisah) dari sisi ke sisi. Dengan menambahkan offset acak waktu kecil ke setiap ikon, kita mencegah ikon dari menghidupkan sinkron, yang akan telah melemahkan ilusi kita akan pergi.

Jika Anda ingin mengintip apa yang tampak seperti animasi, tetap dalam pernyataan [diri startQuivering]; pada akhir if(self) {...} blok di init metode ikon. Hanya pastikan untuk menghapus sesudahnya, meskipun! Gambar di bawah menunjukkan tombol Hapus dan ikon berbagai fase animasi rotasi.

A snapshot of how the cells would look in deletion modeA snapshot of how the cells would look in deletion modeA snapshot of how the cells would look in deletion mode

Kita sekarang ingin memperkenalkan mode penghapusan ke app kami yang diaktifkan dan dinonaktifkan oleh gerakan sesuai, tanpa tombol Hapus permanen aktif.

Tampaknya masuk akal untuk membuat koleksi tampilan controller bertanggung jawab untuk mengaktifkan dan menonaktifkan modus penghapusan. Mari kita memperkenalkan sebuah variabel boolean untuk melacak modus, dan menimpa metode delegasi yang menunjukkan apakah hal itu diperbolehkan untuk sel pengguna keran di untuk dipilih atau tidak. Kami akan membuat metode ini kembali ya atau tidak tergantung pada nilai variabel boolean.

Dalam ViewController.m, tanda komentar Deklarasi:

Selanjutnya tambahkan berikut metode di tempat yang ditunjukkan dalam file:

Sedikit lebih jauh ke bawah, kami akan menerapkan recognizer gerakan yang dapat mengubah nilai dari variabel ini.

Sekarang kemudian, bagaimana kita melakukan melewati informasi ini kepada golongan SpringboardLayout? Kita mungkin mempertimbangkan mendefinisikan sebuah property boolean pada kelas tata letak yang dapat mengubah tampilan controller. Tapi ini menciptakan kopling tidak perlu antara tampilan controller dan tata letak kelas. Plus, kita akan perlu untuk memastikan bahwa kami menyinkronkan perubahan kedua nilai properti (yaitu dalam tampilan controller dan tata letak). Desain-bijaksana, solusi yang jauh lebih baik adalah dengan menggunakan delegasi: metode yang diperlukan oleh protokol memungkinkan tata letak query yang delegasi tentang keadaan app. Pada kenyataannya, dengan mendefinisikan sebuah protokol di sini, kita meniru atau, sebaliknya, memperluas Apple pendekatan sendiri dimana mereka telah didefinisikan UIViewControllerDelegateFlowLayout yang dapat memasok informasi kelas UIViewControllerFlowLayout. Semua metode dalam protokol ini opsional. Jika belum diimplementasikan, tata letak jatuh kembali pada sifat-sifat global (yang kami bahkan telah menetapkan), seperti yang saya sebutkan sebelumnya. Titik teknis di sini adalah bahwa protokol ini sudah meluas protokol UICollectionViewDelegate, dan kita akan memperluas itu lebih lanjut.

Protokol kami akan berisi sebuah metode yang tata letak dapat query untuk menentukan apakah modus penghapusan aktif atau tidak.

Dalam SpringboardLayout.h Tambahkan Deklarasi protokol berikut:

Saya telah menambahkan parameter untuk koleksi tampilan dan tata letak agar konsisten dengan bagaimana Apple didefinisikan mereka. Idenya adalah bahwa objek yang sama mungkin bertindak sebagai delegasi untuk beberapa koleksi pandangan atau layout, dan kita mungkin perlu menyelesaikan antara mereka.

Dalam ViewController.h, tambahkan #import "SpringboardLayout.h" dan menyatakan bahwa controller mengadopsi protokol kami, dengan menambahkan <SpringboardLayoutDelegate>pada akhir pernyataan @interface, jadi itu berbunyi:</SpringboardLayoutDelegate>

Dalam ViewController.m, menerapkan metode yang diperlukan:

Memang, semua yang kami lakukan lewat nilai dari variabel boolean modus untuk tata letak, tetapi dalam sebuah proyek yang lebih besar, bisa membuat banyak perbedaan dalam hal penggunaan kembali kode dan Kemampu-rawatan.

Dalam SpringboardLayout, memasukkan metode kenyamanan ini:

Perhatikan bahwa kita ingin kembali objek delegasi yang sama (yang merupakan sebuah properti di kelas lihat koleksi) daripada harus membuat dan mengatur yang baru. Jadi kami pertama Periksa apakah delegasi sesuai dengan protokol kami dan jika demikian, kami kirim pesan yang sesuai. Secara default, kelas UICollectionViewController (dan karenanya kami subclass ViewController) pandangannya koleksi data dan delegasi sumber. Dan karena kami mengumumkan bahwa ViewController sesuai dengan SpringboardLayoutDelegate, itu sebabnya jika kondisi di metode di atas akan menjadi kenyataan.

Sekarang bagaimana kita meresap informasi ini ke sel-sel, untuk mendapatkan mereka untuk mengungkapkan atau menyembunyikan tombol tutup, dan mulai/berhenti animasi?

Karena kami contoh SpringboardLayout bertanggung jawab untuk mengkonfigurasi properti sel yang harus dilakukan dengan presentasi visual dan tata letak sel, seharusnya bertanggung jawab untuk memanggil perubahan yang sesuai pada sel-sel ketika kami penghapusan mode diaktifkan atau dinonaktifkan. Bagaimana tepatnya? Ini adalah bagian dari arsitektur lihat koleksi yang kami ditangguhkan diskusi, sebelumnya.

Apple koleksi tampilan arsitektur memperkenalkan kelas lain, yang disebut UICollectionViewLayoutAttributes, yang vektor informasi dari tata letak sel. Atribut kasus dibuat untuk setiap sel, dan ini sangat baik dapat dikonfigurasi untuk bergantung pada beberapa properti negara aplikasi kami. Dalam kasus tertentu kami, pikir keadaan normal vs penghapusan negara. Sel-sel menerima atribut ini dan mengkonfigurasi sendiri sesuai.

Meskipun pada awalnya mungkin tampak bahwa arsitektur ini menyisipkan lapisan tidak perlu tipuan, benar-benar cukup cerdas. Dalam membiarkan kelas atribut menengahi komunikasi antara tata letak dan sel-sel, kita bisa, mengatakan, menciptakan subclass berbeda sel untuk antarmuka yang sama, yang menafsirkan atribut berbeda, mengarah ke perilaku visual yang berbeda.

Kelas UICollectionViewLayoutAttribute mengandung sifat yang berhubungan langsung dengan banyak sel properti visual (seperti opacity, mengubah, dll), tetapi kita harus memperpanjang sehingga kita dapat mendefinisikan sebuah atribut yang menyampaikan Apakah app di penghapusan mode atau tidak. Mari kita melakukan itu sekarang.

Menciptakan subclass baru dari UICollectionViewLayoutAttributes disebut SpringboardLayoutAttributes. Menggantikan isi dari file *.h dan *.m dengan berikut:

Kami telah memperkenalkan boolean properti yang mendefinisikan Apakah kita ingin tombol Hapus tersembunyi atau tidak. Metode - copyWithZone: (metode NSObject) perlu ditimpa sehingga properti baru ditambahkan dalam subclass diperhitungkan ketika atribut objek disalin.

Tanda komentar impor pernyataan #import "SpringboardLayoutAttributes.h" dan masukkan metode berikut yang menginformasikan tata letak kelas tepat atribut (kami kustom SpringboardLayoutAttributes kelas) dan metode yang membantu membuat sel atribut menjaga dalam pertimbangan Apakah penghapusan modus aktif atau tidak:

Langkah terakhir adalah untuk meng-override metode yang diwarisi oleh kelas ikon yang memungkinkan mengkonfigurasi instancenya sesuai dengan atribut relay untuk itu.

Dalam Cell.m memasukkan metode berikut di tempat yang ditunjukkan:

Sekarang semua yang tersisa untuk dilakukan adalah untuk mengatur gerakan kami recognizers untuk mengaktifkan dan menonaktifkan modus penghapusan.

Dalam ViewController.h, memodifikasi pernyataan @interface untuk menyatakan bahwa kelas controller Lihat sesuai dengan kelas UIGestureRecognizerDelegate:

Di kelas ViewController.m, menyisipkan potongan berikut di viewDidLoad-: metode di tempat yang ditunjukkan:

Menyisipkan metode aksi gerakan recognizers:

Mengamati penggunaan sangat nyaman - indexPathForItemAtPoint: metode dalam UICollectionView yang memungkinkan kita cek apakah dalam batas-batas sel item kami tekan atau tekan jatuh di atau tidak. Juga, mengamati pesan sangat penting * [tata letak invalidateLayout] *. Ini sinyal terjadinya beberapa acara yang membutuhkan antarmuka dibangun kembali. Dalam acara ini, itu adalah aktivasi atau penonaktifan modus penghapusan. Atribut baru yang dihasilkan oleh SpringboardLayout kelas untuk semua sel terlihat (dengan modus penghapusan properti memiliki toggled), dan sel-sel berlaku atribut ini untuk diri mereka sendiri.

Membangun proyek, dan check out modus penghapusan keren, animasi Anda hanya membangun! Panjang-menekan ikon setiap mengaktifkannya, dan penyadapan di mana saja di latar belakang menonaktifkan itu, seperti di layar awal iOS.


Mana harus pergi dari sini?

Saya akan merekomendasikan bahwa Anda membaca lihat koleksi pemrograman panduan untuk iOS dan menonton sesi 205 dan 219 (pengantar dan maju koleksi dilihat, masing-masing) dari WWDC 2012. Kode untuk beberapa contoh disajikan dalam pembicaraan ini juga tersedia dalam kode sesi, sehingga Anda dapat bermain-main dengan mereka.

Anda mungkin ingin memperluas contoh yang telah kita bangun sejauh untuk menciptakan batu loncatan-seperti perilaku yang lain, seperti membuat ikon terbang ke posisi ketika app beban untuk pertama kalinya, atau mengaktifkan menyeret ikon dan kemampuan untuk menukar posisi mereka. Anda mungkin ingin membaca dengan teliti API untuk kelas yang berbeda dalam rangka lihat koleksi, karena ada banyak metode yang tidak disinggung dalam tutorial ini, Anda mungkin memerlukan atau dapat membuat baik penggunaan.

Saya berharap tutorial ini telah memberi Anda suatu dasar untuk memulai dengan aplikasi berbasis lihat koleksi Anda sendiri. Terima kasih untuk membaca!

Advertisement
Did you find this post useful?
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.