Apakah SwiftUI kompatibel dengan iOS 12.x dan yang lebih lama?


123

Jika saya memiliki aplikasi yang dibuat dengan SwiftUI, apakah itu akan berfungsi untuk iOS di bawah iOS 13?


1
Mengapa Anda tidak mencobanya? Xcode 11 beta tersedia untuk diunduh, dan tutorialnya ada di sini developer.apple.com/tutorials/swiftui .
Martin R

1
Teman-teman apakah ada yang tahu mengapa jawaban saya dihapus oleh @ Jean-François Fabre
CrazyPro007

10
TIDAK, SwiftUI tidak akan berfungsi dengan iOS 12.x & yang lebih lama.
ystack

Jawaban:


89

Saya baru saja memeriksanya di Xcode 11 dan dapat mengonfirmasi bahwa itu tidak akan kompatibel ke belakang, seperti yang dapat dilihat dalam Viewimplementasi 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 }
}

7
Setidaknya 5 tahun lagi? Jadi Anda hanya menggunakan API yang tersedia di iOS 7 dan yang lebih lama saat ini?
David Monagle

5
Yang paling aneh adalah Anda dapat membuat aplikasi SwiftUI dengan xcode 11 di Mojave (10.4) yang hanya akan berjalan di Catalina (10.5)
Túlio Calazans

34

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:

  • iOS13.0 + beta
  • macOS10.15 + beta
  • tvOS 13.0+ beta
  • watchOS 6.0+ beta

masukkan deskripsi gambar di sini


32

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.

Ini mungkin menjadi kompatibel

Swift 5.1 tidak dirilis belum dan SwiftUIpenggunaan 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 SwiftUIdan Combinekecuali 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 .


1
Ada pembaruan tentang ini? PR yang Anda sebutkan digabungkan, Swift 5.1 dirilis
pengguna158

@ user158 Saya baru saja memperbarui jawabannya dan menjelaskan mengapa fitur ini tidak dapat didukung.
farzadshbfn

15

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.


Mungkin untuk menggunakan SwiftUI di iOS 13 sambil mendukung target penerapan yang lebih rendah. Silakan periksa stackoverflow.com/a/58372597/840742
Ubah

13

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.


1
Saya mengenal sejumlah orang di iPhone yang "tidak didukung", jadi Anda tidak akan pernah mencapai 100% untuk rilis iOS terbaru. Saya tahu saya akan berpikir panjang dan keras tentang ponsel saya berikutnya ketika ponsel saya yang sekarang mati
Gavin

@cspam Meskipun asumsi Anda mungkin benar, mereka tidak menjawab pertanyaan tersebut.
pengguna1892364

iOS 12 tidak menurunkan dukungan untuk lebih dari 10% perangkat sehingga sulit untuk mengatakan apakah kami dapat mengharapkan tingkat adopsi yang sama untuk iOS 13.
Casper Zandbergen

SwiftUI perlu mendukung perangkat yang lebih lama dan perlu karena terlalu banyak orang yang akan membuat Anda terasing! ibu jari
Trevor

9

Berdasarkan dokumentasi Apple, ini hanya tersedia mulai dengan iOS 13, sayangnya.

https://developer.apple.com/documentation/swiftui/


Semua dokumentasi terkait mengatakan bahwa Anda perlu menggunakan iOS 13 SDK (yaitu Xcode 11). Itu tidak berarti versi iOS minimum yang didukung dari perangkat harus iOS 13 ... Anda dapat mendukung versi iOS yang lebih lama dengan baik ...
skala


6

hanya berfungsi untuk ios 13 atau lebih baru

Anda masih dapat melampirkan SwiftUIkode 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


4

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.


3
IPad saya tidak melakukan pemotongan untuk iOS 13, dan mengingat masih kuat dan tidak akan diganti untuk sementara (saya harap) di sini berharap bahwa aplikasi yang saya nikmati / butuhkan tidak membuang perangkat yang lebih lama terpaut.
Gavin

3

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.


3

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!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.