
22:35. Senang
Dilihat WWDC 2019 Catatan Utama. UI deklaratif yang diharapkan benar-benar menjadi kenyataan, dan ini benar-benar acara universal untuk dunia pengembangan iOS. “Kita perlu menulis artikel tentang ini,” pikir saya, dan ribuan pengembang iOS lainnya di seluruh dunia dalam permuliaan.
05:30. Tutorial
Swift UI - Kerangka kerja baru yang dikembangkan oleh Apple, ditulis dalam Swift, dirancang untuk mendeskripsikan secara deskriptif UI dalam kode.
Saya perhatikan bahwa setiap tahun dalam hal dokumentasi, Yabloko menjadi semakin dingin. Kali ini, di bawah Swift UI, mereka melihat beberapa tutorial lengkap dengan penambahan langkah demi langkah dan tampilan interaktif dari hasil yang dilihat, dan pada akhirnya mereka dengan hati-hati menambahkan pertanyaan kontrol untuk mengkonsolidasikan hasil. Ya, hanya dongeng! Ada juga tautan ke proyek contoh.

Bagus!
Saya tidak akan menceritakan kembali tutorial dalam bahasa Rusia, dalam bentuk yang begitu indah lebih baik untuk menyodoknya di sumber aslinya. Saya akan menggambarkan kesan dan pengamatan saya tentang keseluruhan cerita ini dengan Swift UI dan sedikit bersenang-senang di dalamnya.
07:00 pagi Instalasi
Xcode baru memiliki mode pengeditan kode baru - Editor dan Kanvas.

Saya tidak melihat kanvas sekaligus - untuk ini tidak cukup mengunduh Xcode 11.0, Anda juga perlu memperbarui Makos ke 10.15. Tanpa itu, Xcode akan berfungsi, tetapi tanpa kesenangan dari kanvas dan, mungkin, sesuatu yang lain.
Saya senang bahwa ketika Anda memilih kode, elemen yang sesuai di kanvas juga disorot.
Sumbu baru, exampl'y diluncurkan. Apakah itu runtuh? Ya, ya. Apakah lampu latar jatuh? Tidak, tentu saja - hal yang sama tidak pernah terjadi di Xcode;) Tetapi kanvas berfungsi, dan perubahan tampilan tercermin secara instan, jika ini bukan tabel dengan sel yang kompleks.

09:22. Proyek baru
Saat membuat proyek baru, opsi Use Swift UI sekarang tersedia dan proyek dibuat dengan konfigurasi yang sesuai.

File SceneDelegate
baru SceneDelegate
, di mana jendela dan tampilan root dibuat. Tapi di AppDelegate
, tidak ada sepatah kata pun tentang dia. Tetapi ada metode baru yang membuat UISceneConfiguration
:
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
Nah, Default Configuration
itu sendiri ada di Info.plist
dan SceneDelegate
ditunjukkan di sana. Semuanya jatuh pada tempatnya.

Tetapi kembali ke SceneDelegate
- peluncuran berlangsung di dalamnya.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
UIHostingController
adalah generic UIViewController
yang dapat memiliki semua jenis konten di bawah protokol View
baru
open class UIHostingController<Content> : UIViewController where Content : View { /// }
Protokol tampilan tidak senonoh:
public protocol View : _View { associatedtype Body : View var body: Self.Body { get } }
Artinya, ia hanya perlu menerapkan body
.
Tetapi masalahnya adalah bahwa satu ton ekstensi ditulis pada protokol View
ini, misalnya, untuk menggantung gerakan, untuk melacak tampilan dan hilangnya tampilan dari layar, untuk indentasi, bingkai, dan banyak lagi. Anda dapat melihat semua ini di dok Lihat | Dokumentasi Pengembang Apple . Ini berarti bahwa setiap tampilan yang Anda buat (di bawah protokol View
) keluar dari kotak mendapatkan sekelompok semua jenis kekuatan super!
Mari kita ContentView.swift
ke ContentView.swift
.
struct ContentView : View { var body: some View { Text(«Hello World») } }
Sederhana: kami membuat tampilan dari Tampilan dan Kontrol | yang sudah diterapkan Dokumentasi Pengembang Apple . Bisa membuatnya lebih rumit menggunakan berbagai wadah Lihat Layout dan Presentasi | Dokumentasi Pengembang Apple dan tampilan yang telah kami buat sendiri.
Layout with Swift UI adalah cerita terpisah tentang lebih banyak materi yang akan ditulis, dan Apple juga memiliki tutorial yang layak. Saya tidak akan memikirkannya. Mari kita kembali ke bagian kedua dari ContentView.swift
, ada kode seperti itu:
#if DEBUG struct ContentView_Previews : PreviewProvider { static var previews: some View { ContentView() } } #endif
Jelas dari namanya bahwa dialah yang bertanggung jawab atas kanvas yang ditampilkan - dan dia previews
menampilkan previews
, dalam kasus kami ContentView()
.
Mari kita coba membuat layar dengan tabel primitif:
struct ContentView : View { var birds: [Birds] = [] var body: some View { List(birds) { bird in Text(verbatim: bird.name) } } }
Itu saja. Selesai Sederhana, ringkas, elegan. Ini dia semua pesona UI deklaratif!
Dapat dilihat bahwa List
adalah tabel di bawah tenda. Tetapi bukan UITableView, tetapi beberapa UpdateCoalesingTableView.

Dan juga jelas bahwa tidak ada tata letak otomatis. Tidak ada kendala, semuanya ada di bingkai, yang berarti bahwa tidak ada sistem yang kompleks dengan persamaan linear dan banyak perhitungan. Tapi, di sisi lain, tata letaknya adaptif dan frame dihitung entah bagaimana - mari kita lihat di sesi WWDC mendatang bagaimana tepatnya.
Swift UI - apakah ini pembungkus lebih dari UIKit? Ya dan tidak pada saat bersamaan, sepertinya.
Joe Groff tweet sebagai berikut:
"Beberapa entitas adalah pembungkus atas tampilan UI / NS, tetapi kenyataan bahwa mereka melakukan ini dan jenis tampilan yang mereka bungkus adalah hal yang dapat berubah."
Asli:
Beberapa hal membungkus tampilan UI / NS, tetapi apakah itu dilakukan, dan jenis tampilan apa yang mereka bungkus, dapat berubah. Lebih baik memikirkannya sebagai hal yang berbeda.
Yang lebih saya perhatikan:
11 pagi Total
Sayangnya, semua pesona ini
@available (iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
Artinya, beralih ke mereka adalah meninggalkan sumbu lama, yang terlalu radikal dan tanpa perhatian bagi pengguna.
Saya yakin mekanismenya masih mentah, akan ada lebih banyak perubahan, dan banyak bug akan muncul, dan ini alami. Tetapi dalam satu atau dua tahun akan memungkinkan untuk memperkenalkannya ke dalam produk.
Swift UI adalah revolusi langsung di dunia orang yang menyebut diri mereka pengembang iOS, dan itu keren bahwa jalan baru ini, meskipun tidak ideal, telah dibuka.
Sementara itu, tidak ada yang menghalangi Anda untuk menggunakan ini dalam proyek hewan peliharaan Anda, mendapatkan tangan Anda dan mendapatkan kesenangan estetika :)