SwiftUI向后兼容iOS 12.x和更早版本吗?

时间:2019-06-03 19:14:55

标签: swift ios12 swiftui

如果我有一个使用swiftUI制作的应用程序,它将在iOS 13以下的iOS设备上运行吗?

11 个答案:

答案 0 :(得分:43)

我刚刚在Xcode 11中对其进行了检查,并可以确认它不会向后兼容,就像在SwiftUI的View实现中所看到的那样:

/// 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 }
}

答案 1 :(得分:18)

我不这么认为,因为所有库都已针对iOS 13或更高版本进行了注释。

此外,在documentation中,Apple明确提到了受支持的版本:

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

enter image description here

答案 2 :(得分:13)

可能是向后兼容的

Swift 5.1尚未发布,并且SwiftUI使用诸如 opaque return types DSL {{ 3}} (在WWDC中作为 propertyWrapper 引入)等,在Swift 5.1中仅可用提供。由于Swift 5是二进制稳定的,我想不可能在Xcode11中使用嵌入式swift-frameworks,因此它们在Cocoa的内核中重新实现了这些功能,并将它们标记为iOS13 +,直到Swift 5.1发布为止。

我的假设基于以下事实: propertyDelegate Ordered Collection Diffing 将在Swift 5.1中可用,并且与Xcode或Apple的生态系统,但它们也被标记为@available(iOS13,...)。这意味着他们必须使用带有iOS可用性属性的Swift 5.1功能标记所有内容。 Swift 5.1发行后,其中的一些将被删除,但是除非苹果另有说明,否则我们不确定SwiftUICombine DSL 的建议中也提到了这一点:

  

实施:DSL。请注意,Xcode开发人员预览版中的实现使用的转换比此处描述的转换更为简单。链接的PR反映了预览中的实现,但正在积极开发以匹配该建议。

因此,在发布Swift 5.1时,可能会取消向后不兼容的限制,但这确实需要苹果团队加以澄清

答案 3 :(得分:8)

不。 SwiftUI需要iOS 13或更高版本,macOS 15或更高版本,tvOS 13或更高版本或watchOS 6或更高版本的部署目标。该框架包含许多较旧版本的操作系统所不具备的新类型。

答案 4 :(得分:6)

它与iOS 13+兼容。这里是其文档的链接。

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


即使Xcode 10也不支持它。您需要使用截至2019年6月3日为beta版本的Xcode 11。 https://developer.apple.com/tutorials/swiftui/creating-and-combining-views

答案 5 :(得分:6)

不幸的是,基于Apple文档,它仅可从iOS 13开始使用。

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

答案 6 :(得分:6)

如果您打算支持iPhone而不是iPad,那么您可能会希望大多数用户会在12-18个月内(从发布日期开始)升级到iOS 13。也许是85-90%? (我认为苹果公司目前表示,仍有15%的人不在iOS 12上),尽管距离您将无法立即部署SwiftUI应用程序还有很大的距离,否则还有可能疏远许多用户。

还取决于其他10%到15%的用户,这可能意味着您在桌子上留下了很多用户(和$$)。

如果您也支持iPad,那么它就比较棘手,因为人们不经常升级他们的iPad。有很多iPad 2以及第三代和第四代iPad仍在野外,它们只有10.3.3,无法升级。人们只是不会起床去花400到1000美元在新iPad上,而他们的工作还算不错。

总是有空间,需要更新应用程序,使其变得更好,修复错误,这些错误与iOS 13无关。例如,找到在此之前您不了解的错误,这导致了很多问题。用户不满意..不在最新的iOS版本上。而且我们甚至没有谈论很多开发商店支持的企业/公司客户。由于该区域的各种原因,iOS更新有更多的回退。

因此,在让真实的世界返回iOS 13和SwiftUI(绝对值得一看,因为它很棒)之前,在硅谷之外,这与普通消费者的期望并不一致,您将需要支持较旧的设备,并且需要这样做,因为您将被疏远了。

答案 7 :(得分:4)

不幸的是,SwiftUI仅在iOS 13及更高版本中允许。它是在iOS 13框架中引入的。在iOS 13之前,所有内容都是使用Obj-C框架(包括Swift)构建的。

在开发文档的右侧,显示了受支持的iOS,macOS,tvOS,watchOS等版本。

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

希望这会有所帮助!

答案 8 :(得分:2)

正如每个人都说过的,它将不会与旧版iOS向后兼容。但是,鉴于苹果始终具有最新iOS的高安装基础,并且鉴于iOS 13需要iPhone 6S或更高版本,iPad Air 2或更高版本,新的iPad mini 4和iPhone SE。绝大多数用户将能够安装iOS 13并享受可爱的SwiftUI应用。

答案 9 :(得分:2)

正如我之前所有的人所提到的,很明显它将需要iOS 13或更高版本。但是作为一个新的iOS开发人员,我担心与UIKit相比我应该在多大程度上采用SwiftUI。我已经使用UIKit构建了一些小项目,并使用它进行了高级开发。

但是,随着SwiftUI的开始,如何将它们结合起来。以下链接中的文章将所有内容置于上下文中: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both

现在我唯一需要担心的是,我在Xcode 11中注意到Xcode项目无法将Storyboard和SwiftUI结合在一起。

答案 10 :(得分:0)

仅适用于ios 13或更高版本

您仍然可以使用

附加您的SwiftUI代码
@available(iOS 13.0, *)