SwiftUI: Difference between revisions

Content deleted Content added
fixed logo size
and I got the wrong link, so much for double checking. See previous edit summary.
 
(23 intermediate revisions by 15 users not shown)
Line 1:
{{Short description|SoftwareUser developmentinterface environmentframework}}
{{MoreOne citations neededsource|date=JulyJanuary 20232024}}
{{Infobox software
| logo = SwiftUI logo.png
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 interoperability with other UIKit views, 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> and support for maps with [[Apple Maps]].<ref>{{Cite web |title=MapKitSwift for SwiftUIPlaygrounds |url=https://docs.developer.apple.com/documentation/mapkitswift-playgrounds/mapkit_for_swiftui |access-date=2024-01-1031 |website=Apple Developer Documentation |language=en-US}}</ref> alongside support for debugging and other development features.
 
SwiftUI allows for interoperability with UIKit and AppKit views via the <code>UIViewRepresentable</code> and <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>
 
SwiftUI integrates with other Apple services, such as [[Xcode]] 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> and support for maps with [[Apple Maps]].<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>
== History ==
SwiftUI was announced at the company's [[Worldwide Developers Conference]] (WWDC) on June 3, 2019, and was added in [[iOS 13]] and [[macOS Catalina]].<ref name="announcement"></ref>
 
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 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 accessible 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, withaccording to the main[[Model–view–viewmodel|Model–View–ViewModel]] view(MVVM) namedarchitectural ContentViewpattern.<ref>{{citationCite book needed|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 34 ⟶ 46:
}
}
 
struct ContentView: View {
var body: some View {
Text("Hello, World!")
}
}
</syntaxhighlight>
 
Line 46 ⟶ 59:
== External links ==
* [https://developer.apple.com/documentation/swiftui/ SwiftUI] at [[Apple Developer]]
* [https://iosexamples.com/ SwiftUI Example]
 
==Further reading==
Line 54 ⟶ 66:
 
{{iOS}}
{{Apple-stub}}
[[Category:Gesture recognition]]
[[Category:IOS]]