Posts covering SwiftUI APIs for developing apps on Apple platforms
While reading the current color scheme is quite easy in SwiftUI, setting a color scheme requires us to carefully consider what effect we are trying to achieve.
The default alignment of SwiftUI List row separators has changed in iOS 16. We also have some new APIs to customize separator insets.
Starting from iOS 16 and macOS 13 we have a SwiftUI API to request App Store reviews. We can read requestReview property from the environment and call it as a function at the appropriate time.
Tap gesture in SwiftUI now provides the tap location and we can request it in local or global coordinate space.
Starting from iOS 16 and macOS 13 SwiftUI List view can automatically generate move and delete operations without the need of onDelete() and onMove() closures.
With enhanced text modifiers in iOS 16 and macOS 13, it's easy to animate changes to text styles such as font size and weight.
Find and replace feature is automatically supported by SwiftUI TextEditor, but we also have some APIs to customize its behavior, such as disable replace or present the find UI programmatically.
Draw a custom SwiftUI view to replace the symbols in a scatter plot in Swift Charts.
New ViewThatFits API introduced at WWDC 2022 lets us create more flexible layouts in constrained space. It can even help us detect if text is truncated and adapt our views accordingly.
In this article we'll go over all the API additions in iOS 16 to present and customize resizable sheets in SwiftUI. We'll also look at API limitations comparing to UISheetPresentationController in UIKit.
Use the new NavigationSplitView API with a column visibility parameter to programmatically control the visibility of the sidebar in multicolumn navigation in SwiftUI.
Present a half-sheet in SwiftUI by specifying supported detents with the new presentationDetents() modifier in iOS 16.
Let's try out the new SwiftUI navigation APIs introduced in beta 1 for iOS 16 and macOS 13: NavigationStack, NavigationSplitView and ways to set up programmatic navigation.
Set custom background for a navigation bar in iOS 16 using new SwiftUI toolbarBackground() modifier.
Trigger actions with onChange() modifier in SwiftUI that depend on multiple properties changing by combining the logic in a computed property.
Make use of ControlActiveState value in the environment to customize the appearance of key window on macOS in SwiftUI.
Learn how to size and scale symbol images in SwiftUI and why we shouldn't use resizable() modifier with SF Symbols.
Add custom encoding and decoding logic for SwiftUI Color that is not Codable by default to be able to save it to disk or remote database.
Hide and show a view based on a setting or state without shifting the layout by using opacity() modifier in SwiftUI.
Look into how to insert images, formatted data, attributed strings etc. inside SwiftUI Text views by leveraging the power of string interpolation in LocalizedStringKey.
Present multiple sheets at the same time one on top of the other like, for example, in Apple Calendar app when adding a new calendar.
We have several ways to customize the visual style of links placed inside Text views in SwiftUI: tint() modifier, different Text modifiers and attributes in AttributedString.
SwiftUI Text views can automatically parse Markdown strings when created with LocalizedStringKey. Markdown isn't parsed when created with a String variable or with verbatim initializer.
Customize actions for links inside Text views in SwiftUI by using openURL environment value.
Set underline and strikethrough styles in AttributedString and display it with SwiftUI Text view.
Set a keypath to your model properties as FocusState value to avoid declaring custom enums to programmatically set focus and respond to focus changes.
Build sidebar navigation for your macOS app with the help of selection binding in List view and use SceneStroage for state restoration.
Allow users to select the contents of SwiftUI Text view, to be able to copy or share it, by applying textSelection() modifier.
Make use of the focused scene value API to pass data from the focused scene to the commands section of the app.
Avoid the conflict between the drag gesture and editing of text fields inside list rows and make focusing on text fields easier.
Change the style of navigation view in document based apps, by hiding the default view and adding our own.
Make an editable list of items in SwiftUI that automatically adds an empty text field for users to easily add new entries.
Add custom information and copyright to your app's About window on macOS when using the SwiftUI app lifecycle.
Integrate with UndoManager in SwiftUI by building a reusable UndoProvider view that can be used with any binding.
Add RawRepresentable conformance to a custom type that represents a setting or a view state in SwiftUI to be able to save it in AppStorage or SceneStorage.
Remove the default TextEditor background on iOS and add a placeholder that is not currently supported in TextEditor out of the box.
Let users preview various file formats such as Images, Live Photos, PDFs etc. in your SwiftUI app using QuickLook framework.
Provide state restoration for expanded rows in a SwiftUI List view with SceneStorage property wrapper.
Programmatically scroll SwiftUI ScrollView to a newly added item by combining ScrollViewReader and onChange() view modifier.
Implement state restoration in an example tab-based app that stores records of different types of trips.
In this article we will look into how to create a custom hover effect in SwiftUI and how to abstract this logic into a reusable view modifier.
Programmatically scroll SwiftUI List to a particular item, using the fact that its internal implementation is based on UITableView.
Add keyboard shortcuts to a SwiftUI iOS/iPadOS app to improve user experience when using your app with an attached hardware keyboard.
Define and use custom environment key-value pairs in SwiftUI to pass values to the hierarchy of child views.
Make a scrollable view in SwiftUI scroll the active text field into visible range when the keyboard appears on screen in iOS 13.
In this article we would like to share what we learned about buttons in SwiftUI List rows when developing our apps.