SwiftUI: Difference between revisions

Content deleted Content added
Examples: The assertion that it's standard practice to separate app struct and view structs is common knowledge in the SwiftUI developer world but is difficult to cite. The assertion that the main view is called "ContentView" however is pure preference and personal style. I removed the assertion of preference as fact while leaving the assertion of broad convention in the hopes we can find a style guide to reference.
and I got the wrong link, so much for double checking. See previous edit summary.
 
(16 intermediate revisions by 12 users not shown)
Line 10:
| genre = [[Software framework]]
| license = [[proprietary software|Proprietary]]
| website = https://developer.apple.com/xcode/swiftui/
}}
 
'''SwiftUI''' is a user[[Declarative interfaceprogramming|declarative]] framework<ref name="announcement">{{Cite web |last=Mayo |first=Benjamin |date=June 3, 2019 |title=Apple announces SwiftUI, a modern declarative user interface framework for Apple platforms |url=https://9to5mac.com/2019/06/03/apple-announces-swiftui-a-modern-declarative-user-interface-framework-for-apple-platforms/ |access-date=January 22, 2024 |website=9to5mac.com}}</ref> for building [[user interface]]s for [[iOS]], [[iPadOS]], [[watchOS]], [[tvOS]], [[visionOS]] and [[macOS]], developed by [[Apple Inc.]] for the [[Swift (programming language)|Swift]] programming language.
 
== Overview ==
SwiftUI is [[Declarative programming|declarative]], contrasting with the [[Imperative programming|imperative syntax]] used in other Apple development frameworks such as [[UIKit]] and [[AppKit]]. SwiftUI allows for 2D drawing, animations, [[Event (computing)|event handling]], widgets, and [[data binding]]. SwiftUI automatically synchronizes between UI views and data.<ref>{{Cite web |title=SwiftUI |url=https://docs.developer.apple.com/documentation/swiftui |access-date=2024-01-10 |website=Apple Developer Documentation |language=en-US}}</ref>
 
SwiftUI integrates with other Apple servicestechnologies, such as [[Xcode]] and [[Swift Playgrounds]] to provide for real-time previews during editing,<ref name=":0">{{Cite web |title=Previews in Xcode |url=https://developer.apple.com/documentation/swiftui/previews-in-xcode |access-date=2023-11-07 |website=Previews in Xcode – Apple Developer Documentation |language=en |archive-url=https://web.archive.org/web/20231107221047/https://developer.apple.com/documentation/swiftui/previews-in-xcode |archive-date=2023-11-07}}</ref><ref>{{Cite web |title=Swift Playgrounds |url=https://developer.apple.com/swift-playgrounds/ |access-date=2024-01-31 |website=Apple Developer |language=en}}</ref> alongside support for debugging and other development features.
 
SwiftUI allows for interoperability with UIKit and AppKit views via the <code>UIViewRepresentable</code> structand <code>NSViewRepresentable</code> protocols respectively.<ref>{{Cite web |title=Interfacing with UIKit |url=https://docs.developer.apple.com/tutorials/swiftui/interfacing-with-uikit |access-date=2024-01-31 |website=Apple Developer Documentation |language=en-US}}</ref><ref>{{Cite web |title=AppKit integration |url=https://developer.apple.com/documentation/swiftui/appkit-integration |access-date=2024-10-06 |website=Apple Developer Documentation |language=en-US}}</ref>
 
== History ==
Line 27:
During WWDC 2020 and the [[iOS 14]] release cycle, Apple natively added support for maps with the <code>Map</code> view, with an interface based on [[Apple Maps]] via MapKit.<ref>{{Cite web |title=MapKit for SwiftUI |url=https://docs.developer.apple.com/documentation/mapkit/mapkit_for_swiftui |access-date=2024-01-10 |website=Apple Developer Documentation |language=en-US}}</ref> MapKit allows for map annotation and satellite imagery.
 
During WWDC 2021 and the [[IOS 16|iOS 15]] release cycle, Apple added the <code>Canvas</code> element, adding support for [[Immediate mode (computer graphics)|Immediate mode]] drawing and performant 2D drawing.<ref>{{Cite web |title=Canvas |url=https://docs.developer.apple.com/documentation/swiftui/canvas |access-date=2024-01-31 |website=Apple Developer Documentation |language=en-US}}</ref>
 
During WWDC 2022 and the [[iOS 16]] release cycle, Apple released Swift Charts, a framework for making customizable and acessibleaccessible charts.<ref>{{Cite web |title=Swift Charts |url=https://docs.developer.apple.com/documentation/charts |access-date=2024-01-31 |website=Apple Developer Documentation |language=en-US}}</ref>
 
During WWDC 2023, Apple announced the [[Apple Vision Pro]], and support for the device was added to SwiftUI, alongside new views for AR content such as <code>RealityView</code> and <code>ImmersiveSpace</code>.<ref>{{Cite web |title=Meet SwiftUI for spatial computing - WWDC23 - Videos |url=https://developer.apple.com/videos/play/wwdc2023/10109/ |access-date=2024-01-31 |website=Apple Developer |language=en}}</ref>
 
== Examples ==
The following is an example of a simple [["Hello, World!" program|Hello World]] program. The {{code|@main}} attribute defines the entry point into the app. It is standard practice in SwiftUI to separate the application struct and views into different structs, according to the [[Model–view–viewmodel|Model–View–ViewModel]] (MVVM) architectural pattern.<ref>{{citationCite neededbook |last=Hudson |first=Paul |title=Swift Design Patterns |publisher=Paul Hudson |year=2018 |language=English}}</ref>{{self-published source inline|date=JanuaryApril 2024}}.
<syntaxhighlight lang="swift">
import SwiftUI
Line 46:
}
}
 
struct ContentView: View {
var body: some View {
Text("Hello, World!")
}
}
</syntaxhighlight>