Explore the various UI frameworks available for building app interfaces. Discuss the use cases for different frameworks, share best practices, and get help with specific framework-related questions.

All subtopics
Posts under UI Frameworks topic

Post

Replies

Boosts

Views

Activity

How to Use AccessorySetupKit to Automatically Trigger Hardware Pairing Screen in the Background?
Hello everyone, I’m currently developing an iOS app and would like to leverage the AccessorySetupKit framework introduced in iOS 18 to implement pairing functionality with our company's custom hardware product. The specific requirements are as follows: Our hardware supports both Bluetooth and Wi-Fi connections, and both are enabled. When the hardware device is in proximity to an iPhone, I want the device to be automatically recognized, and a pairing screen similar to the one in AccessorySetupKit should appear. Users should be able to perform the pairing process without needing to open our app, even if the app is not in the foreground. The system-level pairing screen should show the hardware information and allow the user to proceed with the pairing. My questions are: Does AccessorySetupKit allow the pairing screen to trigger when the app is running in the background, or must the app be in the foreground? How should I configure AccessorySetupKit to automatically recognize and display my company’s hardware device information? Are there any specific configurations or code implementations needed? Do I need to implement any specific Bluetooth/Wi-Fi advertising broadcasts to ensure the device is correctly detected by the iOS system when in proximity? Are there any additional permissions or configurations required, especially for handling background tasks? Thank you very much for your help, and I look forward to your advice and insights!
Topic: UI Frameworks SubTopic: UIKit
0
0
83
May ’25
tvOS: Using .onExitCommand to Navigate to Home Tab Before Exiting — Is This Acceptable?
Hi Apple Developer Team, In my tvOS app built with SwiftUI, I have a tab-based interface with several sections. The first tab (index 0) is the Home tab. Other tabs include Contact, WiFi, Welcome, etc. I want to handle the remote's Menu / Back button (.onExitCommand) so that: If the user is on any tab other than Home (tabs 1, 2, 3, etc.), pressing the Menu button takes them back to the Home tab. If the user is already on the Home tab, then pressing the TV/Home button (not Menu) behaves as expected — suspending or exiting the app (handled by the system, no code involved). Here's a simplified version of what I implemented: .onExitCommand { if selectedTab != 0 { selectedTab = 0 focusedTab = 0 } else { // Let system handle the exit when user presses the TV/Home button } } This behavior ensures users don’t accidentally exit the app when they're browsing other tabs, and provides a consistent navigation experience. Question: Is this an acceptable and App Store-compliant use of .onExitCommand on tvOS? I'm not calling exit(0) or trying to force-terminate the app — just using .onExitCommand for in-app navigation purposes. Any official guidance or best practices would be greatly appreciated! Thanks, Prashant
Topic: UI Frameworks SubTopic: SwiftUI Tags:
0
0
107
May ’25
Focused Views Get Clipped When Using NavigationStack or Form in Split-Screen Layout on tvOS
When attempting to replicate the tvOS Settings menu layout, where the screen is divided horizontally into two sections, placing a NavigationStack or a Form view on either side of the screen causes focusable views (such as Button, TextField, Toggle, etc.) to be visually clipped when they receive focus and apply the default scaling animation. Specifically: If the Form or NavigationStack is placed on the right side, the left edge of the focused view gets clipped. If placed on the left side, the right edge of the focused view gets clipped. This issue affects any focusable child view inside the Form or NavigationStack when focus scaling is triggered. Example code: struct TVAppMenuMainView: View { var body: some View { VStack { Text("Settings Menu") .font(.title) HStack { VStack { Text("Left Pane") } .frame(width: UIScreen.main.bounds.width * 0.4) // represents only 40% of the screen .frame(maxHeight: .infinity) .padding(.bottom) Divider() NavigationStack { Form { // All the buttons will get cut on the left side when each button is focused Button("First Button"){} Button("Second Button"){} Button("Third Button"){} Button("Forth Button"){} } } } .frame(maxHeight: .infinity) .frame(maxWidth: .infinity) } .background(.ultraThickMaterial) } } How it looks: What I have tried: .clipped modifiers .ignoresSafeArea Modifying the size manually Using just a ScrollView with VStack works as intended, but as soon as NavigationStack or Form are added, the buttons get clipped. This was tested on the latest 18.5 tvOS BETA
0
0
92
Apr ’25
How to capture the currently pressed key when a TextField is in focus?
In the attached code snippet: struct ContentView: View { @State private var vText: String = "" var body: some View { TextField("Enter text", text: Binding( get: { vText }, set: { newValue in print("Text will change to: \(newValue)") vText = newValue } )) } } I have access to the newValue of the text-field whenever the text-field content changes, but how do I detect which key was pressed? I can manually get the diff between previous state and the new value to get the last pressed char but is there a simpler way? Also this approach won't let me detect any modifier keys (such as Alt, Ctrl etc) that the user may have pressed. Is there a pure swift-ui approach to detect these key presses?
3
0
139
Apr ’25
Scene for my "Application's Menu About "My Application""
I am using SwiftUI to create an app and I have figured out how to present a scene for my preferences window. However I have yet to find a way to modify the "About "My App"" scene. I am not even sure how to ask the question on other forums because I keep getting informations on application menus. I would like to find information on accessing/changing other menu entries in the menubar (in SwiftUI) an most specifically I would like to find out how to present a custom window (or at least custom information) when the user selects "About "My App"" I guess I don't need a solution but a pointer to documentation that will help me in my quest.
3
0
1.1k
Apr ’25
visionOS NavigationSplitView - Refreshable ProgressView Disappears
Description I've encountered an issue with NavigationSplitView on visionOS when using a refreshable ScrollView or List in the detail view. The Problem: When implementing pull-to-refresh in the detail view of a NavigationSplitView, the ProgressView disappears and generates this warning: Trying to convert coordinates between views that are in different UIWindows, which isn't supported. Use convertPoint:fromCoordinateSpace: instead. I discovered that if the detail view includes a .navigationTitle(), the ProgressView remains visible and works correctly! Below is a minimal reproducible example showing this behavior. When you run this code, you'll notice: The sidebar refreshable works fine The detail refreshable works only when .navigationTitle("Something") is present Remove the navigationTitle and the detail view's refresh indicator disappears minimal Demo import SwiftUI struct MinimalRefreshableDemo: View { @State private var items = ["Item 1", "Item 2", "Item 3"] @State private var detailItems = ["Detail 1", "Detail 2", "Detail 3"] @State private var selectedItem: String? = "Item 1" var body: some View { NavigationSplitView { List(items, id: \.self, selection: $selectedItem) { item in Text(item) } .refreshable { items = ["Item 1", "Item 2", "Item 3"] } .navigationTitle("Chat") } detail: { List { ForEach(detailItems, id: \.self) { item in Text(item) .frame(height: 100) .frame(maxWidth: .infinity) } } .refreshable { detailItems = ["Detail 1", "Detail 2", "Detail 3"] } .navigationTitle("Something") } } } #Preview { MinimalRefreshableDemo() } Is this expected behavior? Has anyone else encountered this issue or found a solution that doesn't require adding a navigation title?
1
0
96
May ’25
SwiftUI tvOS NavigationTransition and matchedTransitionSource
According to the docs tvOS 18+ supports the new NavigationTransition and the matchedTransitionSource and navigationTransition(.zoom(sourceID: id, in: namespace)) modifiers, however they don't seems to work. Taking the DestinationVideo project example from the latest WWDC the matchedTransitionSourceis marked with #if os(iOS) Is it supported by tvOS or is it for iOS only? https://developer.apple.com/documentation/swiftui/view/navigationtransition(_:) https://developer.apple.com/documentation/swiftui/view/matchedtransitionsource(id:in:configuration:)
2
0
68
Apr ’25
NearbyInteraction with Live Activity and background behavior on iOS 18.4 / watchOS – Questions on UWB and Audio
Hi everyone, we’d appreciate your input on the following use case – thanks in advance! In our iPhone and Apple Watch app, we’re using the NearbyInteraction API to measure the distance between both devices via UWB. Setup: On the iPhone, we start a LiveActivity together with the NISession, to keep the ranging active in the background. ✅ Good news: On iOS 18.4, this works as expected – the NISession stays active in the background as long as the Live Activity is running. Current issues: As soon as the Watch app moves to the background, ranging seems to pause and is eventually terminated. → Question 1: Is there a way to keep the NISession active on the Watch when the app goes into the background? Audio playback from background not working: We'd like to trigger audio playback when certain distance changes are detected. So far, we can only trigger haptic feedback in the background – audio does not play. → Question 2: Is it possible to play audio (e.g. using AVAudioPlayer) while a NISession and a LiveActivity are running in the background? We’d be grateful for any advice or best practices for this combination. Thanks and best regards!
Topic: UI Frameworks SubTopic: General
0
0
72
May ’25
Live Activity animate without updating data
Is it actually possible to display animation (even a simple one) on Live Activity? But on these cases: The main app is terminated - of course, I know I can use the main app to keep updating the Live Activity to make simple animations work, but in this case, the main app is killed. Live Activity data is not updating - I also understand that the Live Activity can perform animations when its data is being update via push notification or other means, but the current case is the data is not being updated. I’ve tried several ways to achieve this, but nothing seems to work. Just when I was about to give up, I found this video from Apple’s official channel: https://www.youtube.com/watch?v=m6WMwSj_EbA At 4:14 in this video, you can see the text "Locating Driver" with the breathing animation. Could someone please help me understand how to implement that kind of animation in a Live Activity when: The main app is not running, and The Live Activity data is not updating?
0
0
149
Apr ’25
Specific ARKit node not showing in AR
After two types of objects correctly inserted as nodes in an augmented reality setting, I replicated exactly the same procedure with a third kind of objects that unfortunately refuse to show up. I checked the flow and it is the same as the other objects as well the content of the LocationAnnotation, but there is surely something that escapes me. Could someone help with some ideas? This is the common code, apart of the class: func appendInAR(ghostElement: Ghost){ let ghostElementAnnotationLocation=GhostLocationAnnotationNode(ghost: ghostElement) ghostElementAnnotationLocation.scaleRelativeToDistance = true sceneLocationView.addLocationNodeWithConfirmedLocation(locationNode: ghostElementAnnotationLocation) shownGhostsAnnotations.append(ghostElementAnnotationLocation) }
9
0
180
Jun ’25
Siri Shortcuts of Siri Intent to Voice Control Parts of App
I am new to the idea of Siri Shortcuts and App Intents. What I want to do is use Siri to run a function in my app. Such as saying to Siri Zoom in map and that will then call a function in my app where I can zoom in the map. Similarly, I could say Zoom out map and it would call a function to zoom out my map. I do not need to share any sort of shortcut with the Shortcuts app. Can someone please point me in the right direction for what type of intents I need to use for this?
0
0
220
Apr ’25
Remove "copy cursor" when dragging a view in SwiftUI
Hi, Im new to SwiftUI and Im trying to implement some drag and drop functionality for some tabs in my application. Im using .draggable(_) and .dropDestination for this and the issue I have is that as I drag the view, the mouse cursor changes to the copy cursor with the green plus sign and I don't like it but I can't figure out how to avoid it. Any help would be appreciated.
1
0
78
Apr ’25
Crash/Glitch when using setViewControllers(_:animated:) with UIHostingController and .refreshable in SwiftUI
Introduction Hello, As part of our ongoing migration to SwiftUI, we are currently managing navigation using UIKit. Our SwiftUI views are embedded in UIHostingController instances and pushed or presented via UINavigationController. We’ve encountered an issue that causes either a UI glitch on iOS 18 or a crash on iOS 17 when using the .refreshable modifier in a SwiftUI view that is added to a UINavigationController via setViewControllers(_:animated:). To reproduce the issue, we’re using the following simple SwiftUI view: struct TestView: View { var body: some View { List { ForEach(0...100, id: \.self) { Text("Number: \($0)") } } .refreshable { // No action needed — the presence of this modifier alone triggers the issue } } } Problematic Scenario The following code causes the issue: class ViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) let initialNav = self.navigationController let hostingController = UIHostingController(rootView: TestView()) let newNav = UINavigationController() // This causes a freeze (iOS 18) or crash (iOS 17) newNav.setViewControllers([hostingController], animated: true) initialNav?.present(newNav, animated: true) } } After presenting the navigation controller, our app is freezing on iOS 18 or crashing on iOS 17. Working scenario When using pushViewController(_:animated:), the issue does not occur: class ViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) let initialNav = self.navigationController let hostingController = UIHostingController(rootView: TestView()) let newNav = UINavigationController() // This works without issue newNav.pushViewController(hostingController, animated: true) initialNav?.present(newNav, animated: true) } } Conclusion We would like to better understand the root cause of this behavior. While using pushViewController is a viable workaround, there are scenarios where we must rely on setViewControllers, and currently, that approach breaks the experience or crashes the app. Is this a known issue, or are we missing something about how UIHostingController interacts with .refreshable in this context? Thanks for your time — we look forward to any insights you can share.
2
0
224
May ’25
ARKit Camera Feed Zoom & Macro Support for Close-Range Objects
I am currently developing an AR experience using ARKit with SceneKit and am looking to implement functionality that enables: Zooming into the AR camera feed, ideally leveraging the ultra-wide or telephoto lenses available on supported devices. Macro-style focus capabilities, allowing users to view and interact with virtual content closely aligned with small or nearby real-world objects (within a few centimeters). My objective is to ensure that ARKit continues to render the scene accurately while enabling a zoomed-in view or macro-level focus for better detail visibility and alignment. Could you please advise on: Whether ARKit currently supports camera zoom or allows access to macro or ultra-wide cameras within an ARSession. Limitations or considerations when using multi-camera setups in conjunction with ARKit. Any guidance or references to documentation or sample code would be greatly appreciated.
0
0
185
May ’25
Improving references to localized strings in App Intents
In order to make referencing keys for localized strings a little more reliable, our application references generated constants for localized string keys: This eliminates the potential for developers to misspell a key when referencing a localized strings. And because these constants are automatically generated by the exact same process that provides localized strings for the application, each and every constant is guaranteed to have a localized string associated with it. I’m currently attempting to implement something similar for the localized strings referenced by our new App Intents. Our initial release of App Intent functionality is simply using string literals to reference localized strings: However, I am running into several issues when trying to reference the string keys as a constant. The closest I managed to get was defining the constant as either a LocalizationValue or as a StaticString and referencing the constant while initializing the LocalizedStringResource. With this approach, I see no errors from Xcode until I try and compile. What’s more is that the wording of the error being thrown is quite peculiar: As you can see with the sample code above, I am clearly calling LocalizedStringResource’s initializer directly as Indicated by the error. Is what I’m trying to do even possible with App Intents? From my research, it does look like iOS app localization is moving more towards using string literals for localized strings. Like with String Catalog’s ability to automatically generate entries from strings referenced in UI without the need for a key. However, we’d prefer to use constants if possible for the reasons listed above.
0
0
141
Apr ’25
Debugging Snapshot Thread Confinement Warning in UITableViewDiffableDataSource
I first applied a snapshot on the main thread like this: var snapshot = NSDiffableDataSourceSnapshot<Section, MessageViewModel>() snapshot.appendSections([.main]) snapshot.appendItems([], toSection: .main) dataSource.applySnapshotUsingReloadData(snapshot) After loading data, I applied the snapshot again using: Task { @MainActor in await dataSource.applySnapshotUsingReloadData(snapshot) } On an iPhone 13 mini, I received the following warning: Warning: applying updates in a non-thread confined manner is dangerous and can lead to deadlocks. Please always submit updates either always on the main queue or always off the main queue However, this warning did not appear when I ran the same code on an iPhone 16 Pro simulator. Can anyone explain it to me? Thank you
Topic: UI Frameworks SubTopic: UIKit Tags:
0
0
109
May ’25
ARView rotation animation changes when coming back to it from a navigationLink
I have an app that uses RealityKit and ARKit, which includes some capturing features (to capture and image with added Entities). I have a navigationLink that allows the user to see the gallery of the images he has taken. When launching the App, the rotation animation of the ARView happens smoothly, the navigationBar transitions from one orientation to another with the ARView keeping it's orientation. However, when I go to the galeryView to see the images and go back to the root view where the ARView is, the rotation animation of the ARView changed: When transitioning from one orientation to another, the ARView is flipped by 90° before transitioning to the new orientation. The issue is shown in this gif (https://i.stack.imgur.com/IOvCx.gif) Any idea why this happens and how I could resolve it without locking the App's orientation changes? Thanks!
1
0
826
May ’25
memory leak/increased memory by NSTextField setString
I just put the TextField on UI and call the NSTextField setString, but it is memory usage is increasing. StoryBoard Objective C put TextField and button to UI set TextField variable to "ABC" in ViewController.h @property (weak) IBOutlet NSTextView* ABC; on button event function //dispatch_sync(dispatch_get_main_queue(), ^{ [_ABC setString:str]; //}); How to block the memory usage increase? Also I was check on Instruments app, and there are many malloc 48bytes, its count is almost same with setString count. Thank you!
1
0
122
May ’25
How do I create Edit Action Menus in SwiftUI on macOS?
Various TextField and TextView elements of Apple apps have text edit actions for text correction, but also auto completion. How can I create such a menu for a TextField in SwiftUI on macOS? the textCompletion modifier did not result in this menu. Many thanks in advance! Jan
Topic: UI Frameworks SubTopic: SwiftUI
Replies
0
Boosts
0
Views
49
Activity
May ’25
How to Use AccessorySetupKit to Automatically Trigger Hardware Pairing Screen in the Background?
Hello everyone, I’m currently developing an iOS app and would like to leverage the AccessorySetupKit framework introduced in iOS 18 to implement pairing functionality with our company's custom hardware product. The specific requirements are as follows: Our hardware supports both Bluetooth and Wi-Fi connections, and both are enabled. When the hardware device is in proximity to an iPhone, I want the device to be automatically recognized, and a pairing screen similar to the one in AccessorySetupKit should appear. Users should be able to perform the pairing process without needing to open our app, even if the app is not in the foreground. The system-level pairing screen should show the hardware information and allow the user to proceed with the pairing. My questions are: Does AccessorySetupKit allow the pairing screen to trigger when the app is running in the background, or must the app be in the foreground? How should I configure AccessorySetupKit to automatically recognize and display my company’s hardware device information? Are there any specific configurations or code implementations needed? Do I need to implement any specific Bluetooth/Wi-Fi advertising broadcasts to ensure the device is correctly detected by the iOS system when in proximity? Are there any additional permissions or configurations required, especially for handling background tasks? Thank you very much for your help, and I look forward to your advice and insights!
Topic: UI Frameworks SubTopic: UIKit
Replies
0
Boosts
0
Views
83
Activity
May ’25
Add Caching in AsyncImage
Hi can you add caching to AsyncImage in the next swift revision pls see image below. without caching support it will redownload everything. wasting api calls
Replies
1
Boosts
0
Views
73
Activity
Apr ’25
tvOS: Using .onExitCommand to Navigate to Home Tab Before Exiting — Is This Acceptable?
Hi Apple Developer Team, In my tvOS app built with SwiftUI, I have a tab-based interface with several sections. The first tab (index 0) is the Home tab. Other tabs include Contact, WiFi, Welcome, etc. I want to handle the remote's Menu / Back button (.onExitCommand) so that: If the user is on any tab other than Home (tabs 1, 2, 3, etc.), pressing the Menu button takes them back to the Home tab. If the user is already on the Home tab, then pressing the TV/Home button (not Menu) behaves as expected — suspending or exiting the app (handled by the system, no code involved). Here's a simplified version of what I implemented: .onExitCommand { if selectedTab != 0 { selectedTab = 0 focusedTab = 0 } else { // Let system handle the exit when user presses the TV/Home button } } This behavior ensures users don’t accidentally exit the app when they're browsing other tabs, and provides a consistent navigation experience. Question: Is this an acceptable and App Store-compliant use of .onExitCommand on tvOS? I'm not calling exit(0) or trying to force-terminate the app — just using .onExitCommand for in-app navigation purposes. Any official guidance or best practices would be greatly appreciated! Thanks, Prashant
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
0
Boosts
0
Views
107
Activity
May ’25
Focused Views Get Clipped When Using NavigationStack or Form in Split-Screen Layout on tvOS
When attempting to replicate the tvOS Settings menu layout, where the screen is divided horizontally into two sections, placing a NavigationStack or a Form view on either side of the screen causes focusable views (such as Button, TextField, Toggle, etc.) to be visually clipped when they receive focus and apply the default scaling animation. Specifically: If the Form or NavigationStack is placed on the right side, the left edge of the focused view gets clipped. If placed on the left side, the right edge of the focused view gets clipped. This issue affects any focusable child view inside the Form or NavigationStack when focus scaling is triggered. Example code: struct TVAppMenuMainView: View { var body: some View { VStack { Text("Settings Menu") .font(.title) HStack { VStack { Text("Left Pane") } .frame(width: UIScreen.main.bounds.width * 0.4) // represents only 40% of the screen .frame(maxHeight: .infinity) .padding(.bottom) Divider() NavigationStack { Form { // All the buttons will get cut on the left side when each button is focused Button("First Button"){} Button("Second Button"){} Button("Third Button"){} Button("Forth Button"){} } } } .frame(maxHeight: .infinity) .frame(maxWidth: .infinity) } .background(.ultraThickMaterial) } } How it looks: What I have tried: .clipped modifiers .ignoresSafeArea Modifying the size manually Using just a ScrollView with VStack works as intended, but as soon as NavigationStack or Form are added, the buttons get clipped. This was tested on the latest 18.5 tvOS BETA
Replies
0
Boosts
0
Views
92
Activity
Apr ’25
How to capture the currently pressed key when a TextField is in focus?
In the attached code snippet: struct ContentView: View { @State private var vText: String = "" var body: some View { TextField("Enter text", text: Binding( get: { vText }, set: { newValue in print("Text will change to: \(newValue)") vText = newValue } )) } } I have access to the newValue of the text-field whenever the text-field content changes, but how do I detect which key was pressed? I can manually get the diff between previous state and the new value to get the last pressed char but is there a simpler way? Also this approach won't let me detect any modifier keys (such as Alt, Ctrl etc) that the user may have pressed. Is there a pure swift-ui approach to detect these key presses?
Replies
3
Boosts
0
Views
139
Activity
Apr ’25
Scene for my "Application's Menu About "My Application""
I am using SwiftUI to create an app and I have figured out how to present a scene for my preferences window. However I have yet to find a way to modify the "About "My App"" scene. I am not even sure how to ask the question on other forums because I keep getting informations on application menus. I would like to find information on accessing/changing other menu entries in the menubar (in SwiftUI) an most specifically I would like to find out how to present a custom window (or at least custom information) when the user selects "About "My App"" I guess I don't need a solution but a pointer to documentation that will help me in my quest.
Replies
3
Boosts
0
Views
1.1k
Activity
Apr ’25
visionOS NavigationSplitView - Refreshable ProgressView Disappears
Description I've encountered an issue with NavigationSplitView on visionOS when using a refreshable ScrollView or List in the detail view. The Problem: When implementing pull-to-refresh in the detail view of a NavigationSplitView, the ProgressView disappears and generates this warning: Trying to convert coordinates between views that are in different UIWindows, which isn't supported. Use convertPoint:fromCoordinateSpace: instead. I discovered that if the detail view includes a .navigationTitle(), the ProgressView remains visible and works correctly! Below is a minimal reproducible example showing this behavior. When you run this code, you'll notice: The sidebar refreshable works fine The detail refreshable works only when .navigationTitle("Something") is present Remove the navigationTitle and the detail view's refresh indicator disappears minimal Demo import SwiftUI struct MinimalRefreshableDemo: View { @State private var items = ["Item 1", "Item 2", "Item 3"] @State private var detailItems = ["Detail 1", "Detail 2", "Detail 3"] @State private var selectedItem: String? = "Item 1" var body: some View { NavigationSplitView { List(items, id: \.self, selection: $selectedItem) { item in Text(item) } .refreshable { items = ["Item 1", "Item 2", "Item 3"] } .navigationTitle("Chat") } detail: { List { ForEach(detailItems, id: \.self) { item in Text(item) .frame(height: 100) .frame(maxWidth: .infinity) } } .refreshable { detailItems = ["Detail 1", "Detail 2", "Detail 3"] } .navigationTitle("Something") } } } #Preview { MinimalRefreshableDemo() } Is this expected behavior? Has anyone else encountered this issue or found a solution that doesn't require adding a navigation title?
Replies
1
Boosts
0
Views
96
Activity
May ’25
SwiftUI tvOS NavigationTransition and matchedTransitionSource
According to the docs tvOS 18+ supports the new NavigationTransition and the matchedTransitionSource and navigationTransition(.zoom(sourceID: id, in: namespace)) modifiers, however they don't seems to work. Taking the DestinationVideo project example from the latest WWDC the matchedTransitionSourceis marked with #if os(iOS) Is it supported by tvOS or is it for iOS only? https://developer.apple.com/documentation/swiftui/view/navigationtransition(_:) https://developer.apple.com/documentation/swiftui/view/matchedtransitionsource(id:in:configuration:)
Replies
2
Boosts
0
Views
68
Activity
Apr ’25
NearbyInteraction with Live Activity and background behavior on iOS 18.4 / watchOS – Questions on UWB and Audio
Hi everyone, we’d appreciate your input on the following use case – thanks in advance! In our iPhone and Apple Watch app, we’re using the NearbyInteraction API to measure the distance between both devices via UWB. Setup: On the iPhone, we start a LiveActivity together with the NISession, to keep the ranging active in the background. ✅ Good news: On iOS 18.4, this works as expected – the NISession stays active in the background as long as the Live Activity is running. Current issues: As soon as the Watch app moves to the background, ranging seems to pause and is eventually terminated. → Question 1: Is there a way to keep the NISession active on the Watch when the app goes into the background? Audio playback from background not working: We'd like to trigger audio playback when certain distance changes are detected. So far, we can only trigger haptic feedback in the background – audio does not play. → Question 2: Is it possible to play audio (e.g. using AVAudioPlayer) while a NISession and a LiveActivity are running in the background? We’d be grateful for any advice or best practices for this combination. Thanks and best regards!
Topic: UI Frameworks SubTopic: General
Replies
0
Boosts
0
Views
72
Activity
May ’25
Live Activity animate without updating data
Is it actually possible to display animation (even a simple one) on Live Activity? But on these cases: The main app is terminated - of course, I know I can use the main app to keep updating the Live Activity to make simple animations work, but in this case, the main app is killed. Live Activity data is not updating - I also understand that the Live Activity can perform animations when its data is being update via push notification or other means, but the current case is the data is not being updated. I’ve tried several ways to achieve this, but nothing seems to work. Just when I was about to give up, I found this video from Apple’s official channel: https://www.youtube.com/watch?v=m6WMwSj_EbA At 4:14 in this video, you can see the text "Locating Driver" with the breathing animation. Could someone please help me understand how to implement that kind of animation in a Live Activity when: The main app is not running, and The Live Activity data is not updating?
Replies
0
Boosts
0
Views
149
Activity
Apr ’25
Specific ARKit node not showing in AR
After two types of objects correctly inserted as nodes in an augmented reality setting, I replicated exactly the same procedure with a third kind of objects that unfortunately refuse to show up. I checked the flow and it is the same as the other objects as well the content of the LocationAnnotation, but there is surely something that escapes me. Could someone help with some ideas? This is the common code, apart of the class: func appendInAR(ghostElement: Ghost){ let ghostElementAnnotationLocation=GhostLocationAnnotationNode(ghost: ghostElement) ghostElementAnnotationLocation.scaleRelativeToDistance = true sceneLocationView.addLocationNodeWithConfirmedLocation(locationNode: ghostElementAnnotationLocation) shownGhostsAnnotations.append(ghostElementAnnotationLocation) }
Replies
9
Boosts
0
Views
180
Activity
Jun ’25
Siri Shortcuts of Siri Intent to Voice Control Parts of App
I am new to the idea of Siri Shortcuts and App Intents. What I want to do is use Siri to run a function in my app. Such as saying to Siri Zoom in map and that will then call a function in my app where I can zoom in the map. Similarly, I could say Zoom out map and it would call a function to zoom out my map. I do not need to share any sort of shortcut with the Shortcuts app. Can someone please point me in the right direction for what type of intents I need to use for this?
Replies
0
Boosts
0
Views
220
Activity
Apr ’25
Remove "copy cursor" when dragging a view in SwiftUI
Hi, Im new to SwiftUI and Im trying to implement some drag and drop functionality for some tabs in my application. Im using .draggable(_) and .dropDestination for this and the issue I have is that as I drag the view, the mouse cursor changes to the copy cursor with the green plus sign and I don't like it but I can't figure out how to avoid it. Any help would be appreciated.
Replies
1
Boosts
0
Views
78
Activity
Apr ’25
Crash/Glitch when using setViewControllers(_:animated:) with UIHostingController and .refreshable in SwiftUI
Introduction Hello, As part of our ongoing migration to SwiftUI, we are currently managing navigation using UIKit. Our SwiftUI views are embedded in UIHostingController instances and pushed or presented via UINavigationController. We’ve encountered an issue that causes either a UI glitch on iOS 18 or a crash on iOS 17 when using the .refreshable modifier in a SwiftUI view that is added to a UINavigationController via setViewControllers(_:animated:). To reproduce the issue, we’re using the following simple SwiftUI view: struct TestView: View { var body: some View { List { ForEach(0...100, id: \.self) { Text("Number: \($0)") } } .refreshable { // No action needed — the presence of this modifier alone triggers the issue } } } Problematic Scenario The following code causes the issue: class ViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) let initialNav = self.navigationController let hostingController = UIHostingController(rootView: TestView()) let newNav = UINavigationController() // This causes a freeze (iOS 18) or crash (iOS 17) newNav.setViewControllers([hostingController], animated: true) initialNav?.present(newNav, animated: true) } } After presenting the navigation controller, our app is freezing on iOS 18 or crashing on iOS 17. Working scenario When using pushViewController(_:animated:), the issue does not occur: class ViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) let initialNav = self.navigationController let hostingController = UIHostingController(rootView: TestView()) let newNav = UINavigationController() // This works without issue newNav.pushViewController(hostingController, animated: true) initialNav?.present(newNav, animated: true) } } Conclusion We would like to better understand the root cause of this behavior. While using pushViewController is a viable workaround, there are scenarios where we must rely on setViewControllers, and currently, that approach breaks the experience or crashes the app. Is this a known issue, or are we missing something about how UIHostingController interacts with .refreshable in this context? Thanks for your time — we look forward to any insights you can share.
Replies
2
Boosts
0
Views
224
Activity
May ’25
ARKit Camera Feed Zoom & Macro Support for Close-Range Objects
I am currently developing an AR experience using ARKit with SceneKit and am looking to implement functionality that enables: Zooming into the AR camera feed, ideally leveraging the ultra-wide or telephoto lenses available on supported devices. Macro-style focus capabilities, allowing users to view and interact with virtual content closely aligned with small or nearby real-world objects (within a few centimeters). My objective is to ensure that ARKit continues to render the scene accurately while enabling a zoomed-in view or macro-level focus for better detail visibility and alignment. Could you please advise on: Whether ARKit currently supports camera zoom or allows access to macro or ultra-wide cameras within an ARSession. Limitations or considerations when using multi-camera setups in conjunction with ARKit. Any guidance or references to documentation or sample code would be greatly appreciated.
Replies
0
Boosts
0
Views
185
Activity
May ’25
Improving references to localized strings in App Intents
In order to make referencing keys for localized strings a little more reliable, our application references generated constants for localized string keys: This eliminates the potential for developers to misspell a key when referencing a localized strings. And because these constants are automatically generated by the exact same process that provides localized strings for the application, each and every constant is guaranteed to have a localized string associated with it. I’m currently attempting to implement something similar for the localized strings referenced by our new App Intents. Our initial release of App Intent functionality is simply using string literals to reference localized strings: However, I am running into several issues when trying to reference the string keys as a constant. The closest I managed to get was defining the constant as either a LocalizationValue or as a StaticString and referencing the constant while initializing the LocalizedStringResource. With this approach, I see no errors from Xcode until I try and compile. What’s more is that the wording of the error being thrown is quite peculiar: As you can see with the sample code above, I am clearly calling LocalizedStringResource’s initializer directly as Indicated by the error. Is what I’m trying to do even possible with App Intents? From my research, it does look like iOS app localization is moving more towards using string literals for localized strings. Like with String Catalog’s ability to automatically generate entries from strings referenced in UI without the need for a key. However, we’d prefer to use constants if possible for the reasons listed above.
Replies
0
Boosts
0
Views
141
Activity
Apr ’25
Debugging Snapshot Thread Confinement Warning in UITableViewDiffableDataSource
I first applied a snapshot on the main thread like this: var snapshot = NSDiffableDataSourceSnapshot<Section, MessageViewModel>() snapshot.appendSections([.main]) snapshot.appendItems([], toSection: .main) dataSource.applySnapshotUsingReloadData(snapshot) After loading data, I applied the snapshot again using: Task { @MainActor in await dataSource.applySnapshotUsingReloadData(snapshot) } On an iPhone 13 mini, I received the following warning: Warning: applying updates in a non-thread confined manner is dangerous and can lead to deadlocks. Please always submit updates either always on the main queue or always off the main queue However, this warning did not appear when I ran the same code on an iPhone 16 Pro simulator. Can anyone explain it to me? Thank you
Topic: UI Frameworks SubTopic: UIKit Tags:
Replies
0
Boosts
0
Views
109
Activity
May ’25
ARView rotation animation changes when coming back to it from a navigationLink
I have an app that uses RealityKit and ARKit, which includes some capturing features (to capture and image with added Entities). I have a navigationLink that allows the user to see the gallery of the images he has taken. When launching the App, the rotation animation of the ARView happens smoothly, the navigationBar transitions from one orientation to another with the ARView keeping it's orientation. However, when I go to the galeryView to see the images and go back to the root view where the ARView is, the rotation animation of the ARView changed: When transitioning from one orientation to another, the ARView is flipped by 90° before transitioning to the new orientation. The issue is shown in this gif (https://i.stack.imgur.com/IOvCx.gif) Any idea why this happens and how I could resolve it without locking the App's orientation changes? Thanks!
Replies
1
Boosts
0
Views
826
Activity
May ’25
memory leak/increased memory by NSTextField setString
I just put the TextField on UI and call the NSTextField setString, but it is memory usage is increasing. StoryBoard Objective C put TextField and button to UI set TextField variable to "ABC" in ViewController.h @property (weak) IBOutlet NSTextView* ABC; on button event function //dispatch_sync(dispatch_get_main_queue(), ^{ [_ABC setString:str]; //}); How to block the memory usage increase? Also I was check on Instruments app, and there are many malloc 48bytes, its count is almost same with setString count. Thank you!
Replies
1
Boosts
0
Views
122
Activity
May ’25