Jika saya memiliki aplikasi yang dibuat dengan SwiftUI, apakah itu akan berfungsi untuk iOS di bawah iOS 13?
Jika saya memiliki aplikasi yang dibuat dengan SwiftUI, apakah itu akan berfungsi untuk iOS di bawah iOS 13?
Jawaban:
Saya baru saja memeriksanya di Xcode 11 dan dapat mengonfirmasi bahwa itu tidak akan kompatibel ke belakang, seperti yang dapat dilihat dalam View
implementasi SwiftUI :
/// A piece of user interface.
///
/// You create custom views by declaring types that conform to the `View`
/// protocol. Implement the required `body` property to provide the content
/// and behavior for your custom view.
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
public protocol View : _View {
/// The type of view representing the body of this view.
///
/// When you create a custom view, Swift infers this type from your
/// implementation of the required `body` property.
associatedtype Body : View
/// Declares the content and behavior of this view.
var body: Self.Body { get }
}
Saya rasa tidak, karena semua perpustakaan sudah diberi anotasi untuk iOS 13 atau lebih tinggi.
Selain itu, dalam dokumentasi , Apple dengan jelas menyebutkan versi yang didukung:
SwiftUI dan Gabungkan menggunakan Jenis Pengembalian Buram di Swift 5.1 dan karena Jenis Pengembalian Buram (bersama fitur lain) diimplementasikan di Swift 5.1 dan karena sifat implementasinya, mereka tidak dapat digunakan kembali ke Swift 5.0 (tidak seperti DSL atau Property-Wrappers ), dan karena iOS 13 adalah iOS SDK paling awal yang berisi runtime Swift 5.1 di OS, maka jawaban untuk pertanyaannya adalah tidak dan SwiftUI dan Combine tidak dapat digunakan pada versi iOS sebelumnya.
Kecuali, Apple menyediakan cara untuk menggabungkan runtime Swift 5.1 (atau rilis mendatang) dengan aplikasi seperti yang biasa dilakukan dengan versi Swift sebelumnya, tetapi karena itu akan meningkatkan ukuran Aplikasi dan menambahkan overhead ke seluruh sistem lagi, saya ragu ini akan pernah terjadi.
Swift 5.1 tidak dirilis belum dan SwiftUI
penggunaan fitur seperti jenis buram kembali , DSL , propertyDelegate (diperkenalkan di WWDC sebagai propertyWrapper ) dan lain-lain, yang akan tersedia hanya di Swift 5.1. Karena Swift 5 adalah biner stabil, saya rasa tidak mungkin untuk menggunakan swift-framework yang tertanam di dalam Xcode11, oleh karena itu mereka telah mengimplementasikan kembali fitur-fitur ini di inti Cocoa dan menandainya sebagai iOS13 + tersedia hingga Swift 5.1 dirilis.
Asumsi saya didasarkan pada fakta bahwa, Ordered Collection Diffing dan DSL akan tersedia di Swift 5.1 dan tidak memiliki korelasi dengan Xcode atau ekosistem Apple, tetapi mereka juga ditandai sebagai @available(iOS13,...)
. Ini berarti mereka harus menandai semuanya menggunakan fitur Swift 5.1 dengan atribut ketersediaan iOS. Beberapa dari mereka akan dihapus setelah Swift 5.1 dirilis, tetapi kami tidak dapat memastikannya SwiftUI
dan Combine
kecuali Apple mengatakan sebaliknya. Ini juga disebutkan dalam proposal DSL :
Implementasi: PR . Perhatikan bahwa implementasi dalam pratinjau developer Xcode menggunakan transformasi yang lebih sederhana daripada yang dijelaskan di sini. PR terkait mencerminkan implementasi dalam pratinjau tetapi sedang dalam pengembangan aktif untuk menyesuaikan dengan proposal ini.
Jadi batasan ketidakcocokan ke belakang mungkin dicabut ketika Swift 5.1 dirilis, tetapi itu benar-benar perlu diklarifikasi oleh tim Apple .
Tidak. SwiftUI memerlukan target penerapan iOS 13 atau lebih baru, macOS 10.15 atau lebih baru, tvOS 13 atau lebih baru, atau watchOS 6 atau lebih baru. Kerangka kerja berisi banyak jenis baru yang tidak ada pada versi OS yang lebih lama.
Jika Anda memotret untuk mendukung iPhone dan bukan iPad, Anda mungkin berharap sebagian besar pengguna akan meningkatkan ke iOS 13 dalam 12-18 bulan (dimulai dengan tanggal rilis). Mungkin 85-90%? (Saya pikir Apple mengatakan pada saat ini masih ada 15% orang yang tidak menggunakan iOS 12) Itu masih cukup lama di mana Anda tidak akan dapat langsung menerapkan aplikasi SwiftUI atau berisiko mengasingkan banyak pengguna.
Juga tergantung pada apa yang 10-15% lainnya, itu bisa berarti banyak pengguna (dan $$) untuk Anda tinggalkan di meja.
Jika Anda mendukung iPad juga maka itu lebih rumit karena orang tidak sering memutakhirkan iPad mereka. Ada banyak iPad 2 bersama dengan iPad generasi ke-3 dan ke-4 yang masih beredar, yang hanya memiliki 10.3.3 dan tidak dapat ditingkatkan lagi. Orang-orang tidak akan mau bangun dan membayar antara $ 400 - $ 1.000 untuk iPad baru ketika iPad mereka berfungsi dengan baik.
Selalu ada ruang dan kebutuhan untuk memperbarui aplikasi, membuatnya lebih baik, memperbaiki bug, yang tidak selalu ada hubungannya dengan iOS 13. yaitu menemukan bug yang tidak Anda ketahui sebelumnya sehingga membuat banyak pengguna tidak senang. . bukan pada versi iOS terbaru. dan kami bahkan belum membicarakan pelanggan perusahaan / perusahaan yang didukung oleh banyak toko pengembang. Ada lebih banyak pushback pada pembaruan iOS karena berbagai alasan di area itu.
Jadi sebelum Anda bersemangat tentang iOS 13 dan SwiftUI (yang memang harus Anda lakukan karena ini luar biasa), di dunia nyata, di luar Silicon Valley, itu tidak sepenuhnya sejalan dengan apa yang diharapkan konsumen rata-rata dan Anda perlu mendukungnya. perangkat yang lebih tua dan perlu karena terlalu banyak orang yang akan membuat Anda terasing.
Berdasarkan dokumentasi Apple, ini hanya tersedia mulai dengan iOS 13, sayangnya.
Ini kompatibel dengan iOS 13+. Berikut ini tautan ke dokumentasinya.
https://developer.apple.com/documentation/swiftui/
Bahkan Xcode 10 tidak mendukungnya. Anda perlu menggunakan Xcode 11 yang dalam versi beta mulai (3 Juni 2019). https://developer.apple.com/tutorials/swiftui/creating-and-combining-views
hanya berfungsi untuk ios 13 atau lebih baru
Anda masih dapat melampirkan SwiftUI
kode Anda dengan menggunakan
@available(iOS 13.0, *)
jika Anda masih menggunakan Xcode di bawah Xcode 11 dan memiliki kode SwiftUI, Anda dapat membungkusnya dengan
#if canImport(SwiftUI)
...
#endif
Ini dapat memperbaiki masalah saat mengompilasi dengan Xcode di bawah Xcode 11
Seperti yang dikatakan semua orang, itu tidak akan kompatibel dengan versi iOS yang lebih lama. Tetapi mengingat Apple secara konsisten memiliki basis penginstalan tinggi untuk iOS terbaru mereka, dan juga mengingat bahwa iOS 13 membutuhkan iPhone 6S atau lebih baru, iPad Air 2 atau lebih baru, iPad mini 4 baru dan iPhone SE. Sebagian besar pengguna akan dapat menginstal iOS 13 dan menikmati aplikasi SwiftUI yang indah.
Seperti yang disebutkan semua orang sebelum saya, sangat jelas bahwa itu akan membutuhkan iOS 13 atau lebih baru. Tetapi sebagai pengembang iOS baru, saya khawatir tentang sejauh mana saya harus mengadopsi SwiftUI dibandingkan dengan UIKit. Saya sudah membangun beberapa proyek kecil dengan UIKit, dan pergi ke suatu tempat yang lebih maju dengannya.
Tapi saat SwiftUI dimulai, bagaimana menggabungkan keduanya. Artikel di tautan berikut menempatkan semuanya dalam konteks: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both
Satu-satunya kekhawatiran saya sekarang adalah saya perhatikan dengan Xcode 11 bahwa proyek Xcode tidak dapat menggabungkan Storyboards dan SwiftUI.
Sayangnya tidak, SwiftUI hanya diizinkan di iOS 13 ke atas. Itu diperkenalkan dalam kerangka iOS 13. Sebelum iOS 13, semuanya dibuat menggunakan kerangka Obj-C (Termasuk Swift).
Di sisi kanan dokumentasi dev, ini menunjukkan versi iOS, macOS, tvOS, watchOS, dll yang didukung.
https://developer.apple.com/documentation/swiftui/
Semoga ini membantu!