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

Opening a New Document from File URL?
I have a sample document-based macOS app. I understand that you can open a new window or a new tab with some text. import SwiftUI struct ContentView: View { @Binding var document: TexDocument @Environment(\.newDocument) var newDocument var body: some View { VStack(spacing: 0) { topView } } private var topView: some View { Button { newDocument(TexDocument(text: "A whole new world!")) } label: { Text("Open new window") .frame(width: 200) } } } Suppose that I have a path to a text file whose security-scoped bookmark can be resolved with a click of a button. I wonder if you can open a new window or a new tab with the corresponding content?. I have done that in Cocoa. I hope I can do it in SwiftUI as well. Thanks.
1
0
137
May ’25
Apple Pay
I'm implementing Apple Pay in a Flutter iOS app using the pay plugin and Braintree as the payment processor. I have followed all necessary steps as outlined by Apple and community resources (e.g., Medium articles, official Apple Developer documentation), but the Apple Pay button does not appear on a real device. Here's what I've completed: Created an Apple Pay Merchant ID Created and downloaded the Apple Pay Payment Processing Certificate, then uploaded it to Braintree Downloaded the Braintree-signed certificate and confirmed it's active in the Apple Developer portal Added the Merchant ID under Signing & Capabilities in Xcode Enabled Apple Pay capability in Xcode Added the Merchant ID to Info.plist Installed required Flutter packages (e.g., pay) Using a valid Apple Pay payment configuration file in Flutter (see below) Tested on a real iOS device with a valid Apple Pay test card added to Wallet Flutter Payment Configuration (in Dart JSON): json Copy Edit { "provider": "apple_pay", "data": { "merchantIdentifier": "merchant.com.example", "displayName": "My Store", "merchantCapabilities": ["3DS", "debit", "credit"], "supportedNetworks": ["visa", "masterCard", "amex"], "countryCode": "US", "currencyCode": "USD" } } Despite this complete setup, the ApplePayButton widget remains invisible There are no errors in the console. Can you help identify what may be missing or misconfigured at the code or configuration level?
2
0
205
May ’25
SIGTRAP crash in CoreGraphics font rendering pipeline (iOS 18.4)
We're observing new crashes specifically on iOS 18.4 devices with this pattern: Exception Type: SIGTRAP Exception Codes: fault addr: 0x000000019bc0f088 Crashed Thread: 0 Thread 0 0 libsystem_malloc.dylib _xzm_xzone_malloc_from_tiny_chunk.cold.1 + 36 1 libsystem_malloc.dylib __xzm_xzone_malloc_from_tiny_chunk + 612 2 libsystem_malloc.dylib __xzm_xzone_find_and_malloc_from_tiny_chunk + 112 3 libsystem_malloc.dylib __xzm_xzone_malloc_tiny_outlined + 312 4 CoreGraphics CG::Path::Path(CG::Path const&) + 132 5 CoreGraphics _CGPathCreateMutableCopyByTransformingPath + 112 6 CoreGraphics _CGFontCreateGlyphPath + 144 7 CoreGraphics _CGGlyphBuilderLockBitmaps + 1112 8 CoreGraphics _render_glyphs + 292 9 CoreGraphics _draw_glyph_bitmaps + 1116 10 CoreGraphics _ripc_DrawGlyphs + 1464 11 CoreGraphics CG::DisplayList::executeEntries(std::__1::__wrap_iter<std::__1::shared_ptr<CG::DisplayListEntry const>*>, std::__1::__wrap_iter<std::__1::shared_ptr<CG::DisplayListEntry const>*>, CGContextDelegate*, CGRenderingState*, CGGStack*, CGRect const*, __CFDictionary const*, bool) + 1328 12 CoreGraphics _CGDisplayListDrawInContextDelegate + 340 13 QuartzCore _CABackingStoreUpdate_ + 612 14 QuartzCore ____ZN2CA5Layer8display_Ev_block_invoke + 120 15 QuartzCore -[CALayer _display] + 1512 16 QuartzCore CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 420 17 QuartzCore CA::Context::commit_transaction(CA::Transaction*, double, double*) + 476 18 QuartzCore CA::Transaction::commit() + 644 19 UIKitCore ___34-[UIApplication _firstCommitBlock]_block_invoke_2 + 36 20 CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 28 21 CoreFoundation ___CFRunLoopDoBlocks + 352 22 CoreFoundation ___CFRunLoopRun + 868 23 CoreFoundation _CFRunLoopRunSpecific + 572 24 GraphicsServices _GSEventRunModal + 168 25 UIKitCore -[UIApplication _run] + 816 26 UIKitCore _UIApplicationMain + 336 27 app _main + 132 28 dyld __dyld_process_info_create + 33284 Key Observations: Crash occurs during font glyph path creation (CGFontCreateGlyphPath) Involves memory allocation in malloc's xzone implementation 100% reproducible on iOS 18.4, not seen in prior OS versions Occurs during standard CALayer rendering operations Not tied to any specific font family or glyph content Questions for Apple: Is this crash signature recognized as a known issue in iOS 18.4's CoreGraphics? Could changes to xzone memory management in iOS 18.4 interact poorly with font rendering? Are there specific conditions that might trigger SIGTRAP in CGPathCreateMutableCopyByTransformingPath? Any recommended mitigations for text rendering while awaiting system updates?
3
3
696
May ’25
Compiler stuck::considering giving up on SwiftUI
Apologies if this comes off as a bit of a rant, and TLDR: Compiler hangs or gives an unhelpful error with any level of complexity in SwiftUI - which makes me want to back to IB Porting a project over to iPhone. Made great progress the first week. However, lately I have been encountering compiler bugs where either the build never finishes, or the build take a really long time and ends with just the error : The compiler is unable to type-check this expression in reasonable time Sometimes I can get it to go away by playing divide and conquer and finding some small error, but other times with my nested scrollview it just seems unhappy with any level of complexity (and I don't think my views are all that complex compared to lots of other apps out there) I've read several posts on these forums for things to try and do to fix it but the bottom line is its impacting my ability to produce a working solution in a reasonable amount of time. So considering going back to Interface Builder though it means starting over with some of the code. If there was another independent way to syntax check my swiftUI code other than line by line myself I'd welcome something like that. The compiler going away and never coming back is very discouraging -- what if I have to make some kind of emergency fix in the future with limited time? Open for any suggestions. Xcode : 16.2
3
0
166
May ’25
Remove persistent bottom gray bar at the bottom when using hardware keyboard
DESCRIPTION OF PROBLEM When using SwiftUI’s TextField or TextEditor on iPadOS, a persistent gray or default system material bar appears at the bottom of the screen. This gray bar is not present in Apple’s native apps (such as Notes, Mail, Messages) or in third-party apps like ChatGPT and Beeper STEPS TO REPRODUCE Create a TextField or TextEditor. Run the code, click on it, without software keyboard enabled.
0
0
132
May ’25
List Layout Breaks in NavigationStack When a View Exceeds Screen Width
This is a bug report. FB17433985 The layout of the following ContentView appears correctly when it is outside a NavigationStack. However, when the same view is placed inside a NavigationStack, the layout breaks. It seems that the width of the List is being affected by the width of the buttonsView, which exceeds the screen width. In my testing, this issue occurs on iOS 18.4 and later, but does not occur on iOS 18.2 or iOS 17.5. Workaround I found: Remove the fixed width modifier from the Button If anyone knows of other ways to resolve this issue without affecting the layout, I would appreciate it if you could share them. import SwiftUI let values = (1...100).map { $0 } let buttonTitles = (1...9).map { "Button\($0)" } struct ContentView: View { var body: some View { VStack { List { Section { ForEach(values.indices, id: \.self) { val in HStack { Text("Index: \(val)") } } } } buttonsView } } private var buttonsView: some View { HStack { ForEach(0..<buttonTitles.count, id: \.self) { index in Button() { } label: { Image(systemName: "square.and.arrow.up") .resizable() .frame(width: 48, height: 48) } } } } } @main struct ButtonShapeBugApp: App { var body: some Scene { WindowGroup { if true { NavigationStack { ContentView() } } else { ContentView() } } } } Environment: Xcode Version 16.3 (16E140) iPhone 18.4.1 real device iPhone SE3rd 18.4 simulator Expect layout Broken layout(9 buttons) Broken layout(10 buttons)
2
0
95
May ’25
DatePicker .graphical style: Inconsistent animation behavior when selecting out-of-range dates
Hi everyone, I’ve noticed an inconsistency in the behavior of SwiftUI’s DatePicker when using the .graphical style with a bounded date range (in:). When a user selects a date (month or year) outside the allowed range: If it's before the lower bound, the picker animates smoothly to the lower bound. BUT if the selected date is after the upper bound, the picker immediately jumps to the upper bound without animation. Note: Using .graphical style with displayedComponents: [.date]. Is this a known issue, and is there any recommended workaround or timeline for a fix? Or is this the intended behavior?
2
0
113
May ’25
NavigationStack within NavigationSplitView's detail column clears the path when disappearing
I'd like to persist the path on a sidebar selection, so when user comes back to the sidebar selection, they land where they were before. Unexpectedly, the path gets cleared when sidebarSelection is changed from the NavigationStack that uses the path to something else. Is this an intended behavior? How to workaround it? Using TabView is one way, but TabView has its own problems, so I'm wondering if there's a solution within NavigationSplitView first. Here is a minimal reproduce of the issue: struct Home2: View { private enum SidebarSelection: CaseIterable, Identifiable { var id: Self { self } case files, tags } @State private var sidebarSelection: SidebarSelection? = .files @State private var path: [Int] = [] var body: some View { NavigationSplitView { List(SidebarSelection.allCases, selection: $sidebarSelection) { selection in switch selection { case .files: Label("Files", image: "custom.square.stack") case .tags: Label("Tags", systemImage: "grid") } } } detail: { switch sidebarSelection { case .files: NavigationStack(path: $path) { Subview(depth: 1) .navigationDestination(for: Int.self) { Subview(depth: $0) } } case .tags: Text("Tags") default: EmptyView() } } .onChange(of: path) { print("\(path.count)") } } } struct Subview: View { let depth: Int var body: some View { List { NavigationLink("Next: \(depth + 1)", value: depth + 1) } .navigationTitle("Depth \(depth)") } } #Preview("Home2") { Home2() }
4
0
162
May ’25
Xcode 16 SwiftUI List Fast Scrolling Issue
Hi! When building my app using Xcode 16, fast scrolling (using scrollViewProxy.scrollTo) a list would result in items not appearing even when scrolling stopped. This does not happen when the app is built with Xcode 15, even on iOS 18. I'm also getting this error in the logs: List failed to visit cell content, returning an empty cell. - SwiftUICore/Logging.swift:84 - please file a bug report.
5
6
1.4k
May ’25
Getting the content of an NSView in an NSImage in OSX15 sequoia
as all the nice system services that were CGWindowListCreateImage, lockFocus are now deprecated, and drastic restictions are imposed to CALayer/renderInContext:, i just cant figure out how to design a single generic obj C method to capture the content of an NSView , whatever this view is ( subclassed or not, layer backed of not ). As simple as that. this was the method, which now no longer works : //============================================================================= +(NSImage*) viewImageShot:(NSView*)view :(BOOL)bFlip //============================================================================= // capture an NSImage of the given view content // pass window.contentView to capture the whole window,cropping the title bar { CGFloat wantedLayer = view.wantsLayer; BOOL wasHidden= view.hidden; view.hidden= NO; view.wantsLayer= YES; NSImage *requiredImage = [[NSImage alloc] initWithSize:view.bounds.size]; [requiredImage lockFocus]; CGContextRef context= [[NSGraphicsContext currentContext] CGContext]; if(bFlip) FlipContext(context, view.bounds.size.height); [view.layer renderInContext:context]; [requiredImage unlockFocus]; view.wantsLayer = wantedLayer; view.hidden = wasHidden; return requiredImage; } Is there here some hope to get some help or direction to acheive this goal ? thanks to those whow will answer.
Topic: UI Frameworks SubTopic: AppKit
1
0
105
May ’25
New UIButton title left aligned
Hello There, I was trying to do a Button with title left aligned. With the old UIButton, I would have used the title-/contentEdgeInsets to achieve this, but with the new button these values are deprecated and do not work anymore. As far as I understood, with the new button only the spacing between the elements (sub-, title and image) is controllable. I also tried just setting the buttons width to the same width as the label, what would be possible in my case since it should be kind of a "hyperlink-button" which has no background or border. This works so far, but once the user interacts with the button, the title label gets multiline, which is on the one hand not wanted and on the other hand of course does not look left aligned anymore. (Besides the buttons height is fix in my case which leads to clipping of the title) So here again in short: Is there any way to make the title of the new UIButton left aligned inside of the button? Thank you very much in advance.
2
0
1.7k
May ’25
onReceive(_:perform:) on Frontmost Window Only?
I have a simple document-based application for macOS. struct ContentView: View { @Binding var document: TextDocument var body: some View { .onReceive(NotificationCenter.default.publisher(for: .notificationTextWillAppendSomeTextt), perform: { _ in }) VStack { TextEditor(text: $document.text) } } } extension Notification.Name { static let notificationTextWillAppendSomeTextt = Notification.Name("TextWillAppendSomeText") } Suppose that my application currently has three tabs. If I call a menu command through post(name:object:) this menu command call will affect all three of them. This stackoverflow topic talks about it, too. So how could I tell which window should get a call and others don't? Thanks.
3
0
112
May ’25
EditMode & EditButton not working in a way I expect
I have something that looks like: NavigationStack { List(self.items, id: \.self, selection: self.$selectedItems) { item in NavigationLink { ItemView(item: item) .environment(\.managedObjectContext, self.viewContext) } label: { LabelWithMenuView(object: item) { ptr in self.labelHandler(item: item, newName: ptr) } } } if self.editMode?.wrappedValue == .active { editButtons } else { TextField("Add Item", text: self.$newItem) .onSubmit { self.addItem() self.newItem = "" } .padding() } } #if os(iOS) .toolbar { EditButton() } .onChange(of: self.editMode?.wrappedValue) { old, new in print("editMode \(old) -> \(new)") } #endif With that layout, the edit button doesn't show up at all; if I put it as part of the List, it does show up, but the first click doesn't do anything; after that, it works, but the onChange handler doesn't show it getting changed, and the editButtons don't go away.
8
2
2.5k
May ’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
How do I size a UITextView with scroll disabled?
tl;dr: UITextView does not auto layout when isScrollEnabled = false I have a screen with multiple UITextViews on it, contained within a ScrollView. For each textview, I calculate the height needed to display the entire content in SwiftUI and set it using the .frame(width:height:) modifier. The UITextView will respect the size passed in and layout within the container, but since UITextView is embedded within a UIScrollView, when a user attempts to scroll on the page, often they will scroll within a UITextView block rather than the page. They currently need to scroll along the margins outside of the textview to get the proper behavior. Since I am already calculating the height to display the text, I don't want the UITextView to scroll. However, when I set isScrollEnabled = false, the text view displays in a single long line that gets truncated. I have tried Setting various frame/size attributes but that seems to have zero affect on the layout. Embedding the textView within a UIView, and then sizing the container, but then the textView does not display at all. Setting a fixed size textContainer in the layoutManager but did not work. There's a lot of code so I can't copy/paste it all, but generally, it looks like struct SwiftUITextEditor: View { @State var text: AttributedString = "" var body: some View { ZStack { MyTextViewRepresentable(text: $text) } .dynamicallySized(from: $text) } } struct MyTextViewRepresentable: UIViewRepresentable { @Binding var text: AttributedString let textView = UITextView(usingTextLayoutManager: true) func makeUIView(context: Context) -> UITextView { textView.attributedText = text textView.isScrollEnabled = false } ... }
1
0
178
May ’25
Using App Intents in Live Activity to Pause a Timer
Hello, I am trying to test a concept of a timer stopwatch with Live Activities and integrating buttons like Pause/Resume. When the stopwatch starts, a new Live Activity is created. The stopwatch is managed by the ViewModel, which has functions like start(), pause(), resume(), reset(), and also startLiveActivity(), etc. It uses @AppStorage to store keys like stopWatchModeRaw values, startTimeInterval, etc. The Live Activity state is stored here in the view model using: private var currentActivity: Activity? = nil The Live Activity is started using: private func startActivity() async { guard currentActivity == nil, Activity<StopwatchAttributes>.activities.isEmpty else { if currentActivity == nil { findAndAssignExistingActivity() await updateActivity() } return } let attributes = StopwatchAttributes() let state = StopwatchAttributes.ContentState( .... pass in the content state variables .... ) let content = ActivityContent(state: state, staleDate: nil) do { let activity = try Activity<StopwatchAttributes>.request( attributes: attributes, content: content, pushType: nil ) // Store the activity instance self.currentActivity = activity } catch { print("Error requesting Live Activity: \(error.localizedDescription)") } } and FindAndAssignExistingAcivity does: private func findAndAssignExistingActivity() { if let existingActivity = findActivity(), existingActivity.activityState == .active || existingActivity.activityState == .stale { print("Found existing activity on launch: \(existingActivity.id)") self.currentActivity = existingActivity } else { print("No existing activity found on launch.") self.currentActivity = nil } } UpdateActivity if the activity exists with a guard statement, and then update the activity. This is also used when the user taps Pause in the Stopwatch. The main issue I am facing is with the PauseIntent, it can't find the Live Activity and will always exit at that guard statement. struct PauseIntent: AppIntent { static var title: LocalizedStringResource = "Pause Stopwatch" func perform() async throws -> some IntentResult { guard let defaults = UserDefaults(suiteName: appGroupID) else { return .result() // Simple failure } let currentModeRaw = defaults.integer(forKey: "stopwatchModeRawValue") let currentMode = StopwatchMode(rawValue: currentModeRaw) ?? .reset let startTimeInterval = defaults.double(forKey: "startTimeInterval") // TimeInterval when current running segment started let accumulatedTime = defaults.double(forKey: "accumulatedTime") guard let activity = Activity<StopwatchAttributes>.activities.first else { Self.logger.error("PauseIntent EXIT: No Live Activity found to update. (Activity<StopwatchAttributes>.activities is empty)") return .result() // EXITING HERE, No Live Activity Found, there was nothing found to update... -> It always exits here } followed by rest of the code to update the state of the live activity, but it never executes because the activity = Activity.activities.first always returns false. What seems to be the issue? 1 .Is the method wrong to check for the live activity before attempting to Pause? 2. Can the Live Activity actually Pause the Stopwatch Timer in the main App since the Live Activity is actually a Widget Extension and not the App itself, so it cannot see the data directly?
1
0
144
May ’25
UserDefaults.standard was cleared and app UUDI is also changed when I update new version from app store
Facing issue of NSUserDefaults data got cleared on update new version from app store. so all data of user got cleared and user have to login again. I was having app in store with version 1.1.3 and then we have uploaded new version to store with version 1.1.4 but when user download app from store their data was cleared from UserDefaults.so this is big issue in update. need to help. is that apple updated any process on update. Question How Apple change version build in device when we update app from app store. is it uninstall old build and install new build ? Or it is install new version on old version ? Should UserDefaults.standard will delete on update ? Updating Provisioning profile from manual to automatically cause issue on UserDefaults.standard Like UserDefaults got cleared and uuid will change ? Do we have anythings that we can identify specific user as uniq user ? What is better solution to store login data into SQLite store or in UserDefaults as model ? Will appreciate for your help. this is very big issue and login again on update will make app user more effect
4
1
4.0k
May ’25
Any way to remove the persistent "Allow Paste" pop up after user has given permission?
My app makes constant use of copy paste, allowing the user to past links into the app as a core function. Unfortunately users are forced to press the "Allow Paste" button every single time they copy paste, which in my app is constantly. Also the default option is "Deny" even after the user has previously given permission. Is there any way to eliminate the pop up after the user has given permission to the app? I would propose that there be a third option for "Always Allow" paste from this app for the user to select which would silence subsequent pop ups. If the goal is to make a seamless experience for users then we need to consider if we are making things too difficult in the name of security?
3
0
112
May ’25
How to create a QuickTime recording like panel?
QuickTime recording palette behaves in a way which I want to replicate in my desktop app - specifically the behaviour when switching spaces, it appears on top. Currently, my app appears on all spaces, and even over fullscreen applications BUT it already exists when I switch to the space, this feels disjointed. I can't find a solution to this behaviour. Here's the Window Collection Behaviours I've tried (on an NSPanel): FullScreenAuxiliary - appears over fullscreen apps. CanJoinAllSpaces - appears on all spaces. These two options make the dock show up on all spaces in the same position, but on each space they already exists. I've tried this behaviour too: MoveToActiveSpace - which as per docs would move the window into active space only when its reopened, mine stays open all the time. I can't find any more information on how QuickTime achieves this.
Topic: UI Frameworks SubTopic: SwiftUI
0
0
73
May ’25
memory leak upon mouse down in a NSTextField
Dear all, Sorry if the topic has already been commented but I could not be able to find it in over 10,000 picks using the forum search field... My problem is that with any NSTextField in my app, a click will result in a memory leak. There is no code attached, just bindings to NSNumber properties. How can I fix this ? Thanks for your help. Best regards Chris
Topic: UI Frameworks SubTopic: AppKit
0
0
74
May ’25
Opening a New Document from File URL?
I have a sample document-based macOS app. I understand that you can open a new window or a new tab with some text. import SwiftUI struct ContentView: View { @Binding var document: TexDocument @Environment(\.newDocument) var newDocument var body: some View { VStack(spacing: 0) { topView } } private var topView: some View { Button { newDocument(TexDocument(text: "A whole new world!")) } label: { Text("Open new window") .frame(width: 200) } } } Suppose that I have a path to a text file whose security-scoped bookmark can be resolved with a click of a button. I wonder if you can open a new window or a new tab with the corresponding content?. I have done that in Cocoa. I hope I can do it in SwiftUI as well. Thanks.
Replies
1
Boosts
0
Views
137
Activity
May ’25
Apple Pay
I'm implementing Apple Pay in a Flutter iOS app using the pay plugin and Braintree as the payment processor. I have followed all necessary steps as outlined by Apple and community resources (e.g., Medium articles, official Apple Developer documentation), but the Apple Pay button does not appear on a real device. Here's what I've completed: Created an Apple Pay Merchant ID Created and downloaded the Apple Pay Payment Processing Certificate, then uploaded it to Braintree Downloaded the Braintree-signed certificate and confirmed it's active in the Apple Developer portal Added the Merchant ID under Signing & Capabilities in Xcode Enabled Apple Pay capability in Xcode Added the Merchant ID to Info.plist Installed required Flutter packages (e.g., pay) Using a valid Apple Pay payment configuration file in Flutter (see below) Tested on a real iOS device with a valid Apple Pay test card added to Wallet Flutter Payment Configuration (in Dart JSON): json Copy Edit { "provider": "apple_pay", "data": { "merchantIdentifier": "merchant.com.example", "displayName": "My Store", "merchantCapabilities": ["3DS", "debit", "credit"], "supportedNetworks": ["visa", "masterCard", "amex"], "countryCode": "US", "currencyCode": "USD" } } Despite this complete setup, the ApplePayButton widget remains invisible There are no errors in the console. Can you help identify what may be missing or misconfigured at the code or configuration level?
Replies
2
Boosts
0
Views
205
Activity
May ’25
SIGTRAP crash in CoreGraphics font rendering pipeline (iOS 18.4)
We're observing new crashes specifically on iOS 18.4 devices with this pattern: Exception Type: SIGTRAP Exception Codes: fault addr: 0x000000019bc0f088 Crashed Thread: 0 Thread 0 0 libsystem_malloc.dylib _xzm_xzone_malloc_from_tiny_chunk.cold.1 + 36 1 libsystem_malloc.dylib __xzm_xzone_malloc_from_tiny_chunk + 612 2 libsystem_malloc.dylib __xzm_xzone_find_and_malloc_from_tiny_chunk + 112 3 libsystem_malloc.dylib __xzm_xzone_malloc_tiny_outlined + 312 4 CoreGraphics CG::Path::Path(CG::Path const&) + 132 5 CoreGraphics _CGPathCreateMutableCopyByTransformingPath + 112 6 CoreGraphics _CGFontCreateGlyphPath + 144 7 CoreGraphics _CGGlyphBuilderLockBitmaps + 1112 8 CoreGraphics _render_glyphs + 292 9 CoreGraphics _draw_glyph_bitmaps + 1116 10 CoreGraphics _ripc_DrawGlyphs + 1464 11 CoreGraphics CG::DisplayList::executeEntries(std::__1::__wrap_iter<std::__1::shared_ptr<CG::DisplayListEntry const>*>, std::__1::__wrap_iter<std::__1::shared_ptr<CG::DisplayListEntry const>*>, CGContextDelegate*, CGRenderingState*, CGGStack*, CGRect const*, __CFDictionary const*, bool) + 1328 12 CoreGraphics _CGDisplayListDrawInContextDelegate + 340 13 QuartzCore _CABackingStoreUpdate_ + 612 14 QuartzCore ____ZN2CA5Layer8display_Ev_block_invoke + 120 15 QuartzCore -[CALayer _display] + 1512 16 QuartzCore CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 420 17 QuartzCore CA::Context::commit_transaction(CA::Transaction*, double, double*) + 476 18 QuartzCore CA::Transaction::commit() + 644 19 UIKitCore ___34-[UIApplication _firstCommitBlock]_block_invoke_2 + 36 20 CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 28 21 CoreFoundation ___CFRunLoopDoBlocks + 352 22 CoreFoundation ___CFRunLoopRun + 868 23 CoreFoundation _CFRunLoopRunSpecific + 572 24 GraphicsServices _GSEventRunModal + 168 25 UIKitCore -[UIApplication _run] + 816 26 UIKitCore _UIApplicationMain + 336 27 app _main + 132 28 dyld __dyld_process_info_create + 33284 Key Observations: Crash occurs during font glyph path creation (CGFontCreateGlyphPath) Involves memory allocation in malloc's xzone implementation 100% reproducible on iOS 18.4, not seen in prior OS versions Occurs during standard CALayer rendering operations Not tied to any specific font family or glyph content Questions for Apple: Is this crash signature recognized as a known issue in iOS 18.4's CoreGraphics? Could changes to xzone memory management in iOS 18.4 interact poorly with font rendering? Are there specific conditions that might trigger SIGTRAP in CGPathCreateMutableCopyByTransformingPath? Any recommended mitigations for text rendering while awaiting system updates?
Replies
3
Boosts
3
Views
696
Activity
May ’25
Compiler stuck::considering giving up on SwiftUI
Apologies if this comes off as a bit of a rant, and TLDR: Compiler hangs or gives an unhelpful error with any level of complexity in SwiftUI - which makes me want to back to IB Porting a project over to iPhone. Made great progress the first week. However, lately I have been encountering compiler bugs where either the build never finishes, or the build take a really long time and ends with just the error : The compiler is unable to type-check this expression in reasonable time Sometimes I can get it to go away by playing divide and conquer and finding some small error, but other times with my nested scrollview it just seems unhappy with any level of complexity (and I don't think my views are all that complex compared to lots of other apps out there) I've read several posts on these forums for things to try and do to fix it but the bottom line is its impacting my ability to produce a working solution in a reasonable amount of time. So considering going back to Interface Builder though it means starting over with some of the code. If there was another independent way to syntax check my swiftUI code other than line by line myself I'd welcome something like that. The compiler going away and never coming back is very discouraging -- what if I have to make some kind of emergency fix in the future with limited time? Open for any suggestions. Xcode : 16.2
Replies
3
Boosts
0
Views
166
Activity
May ’25
Remove persistent bottom gray bar at the bottom when using hardware keyboard
DESCRIPTION OF PROBLEM When using SwiftUI’s TextField or TextEditor on iPadOS, a persistent gray or default system material bar appears at the bottom of the screen. This gray bar is not present in Apple’s native apps (such as Notes, Mail, Messages) or in third-party apps like ChatGPT and Beeper STEPS TO REPRODUCE Create a TextField or TextEditor. Run the code, click on it, without software keyboard enabled.
Replies
0
Boosts
0
Views
132
Activity
May ’25
List Layout Breaks in NavigationStack When a View Exceeds Screen Width
This is a bug report. FB17433985 The layout of the following ContentView appears correctly when it is outside a NavigationStack. However, when the same view is placed inside a NavigationStack, the layout breaks. It seems that the width of the List is being affected by the width of the buttonsView, which exceeds the screen width. In my testing, this issue occurs on iOS 18.4 and later, but does not occur on iOS 18.2 or iOS 17.5. Workaround I found: Remove the fixed width modifier from the Button If anyone knows of other ways to resolve this issue without affecting the layout, I would appreciate it if you could share them. import SwiftUI let values = (1...100).map { $0 } let buttonTitles = (1...9).map { "Button\($0)" } struct ContentView: View { var body: some View { VStack { List { Section { ForEach(values.indices, id: \.self) { val in HStack { Text("Index: \(val)") } } } } buttonsView } } private var buttonsView: some View { HStack { ForEach(0..<buttonTitles.count, id: \.self) { index in Button() { } label: { Image(systemName: "square.and.arrow.up") .resizable() .frame(width: 48, height: 48) } } } } } @main struct ButtonShapeBugApp: App { var body: some Scene { WindowGroup { if true { NavigationStack { ContentView() } } else { ContentView() } } } } Environment: Xcode Version 16.3 (16E140) iPhone 18.4.1 real device iPhone SE3rd 18.4 simulator Expect layout Broken layout(9 buttons) Broken layout(10 buttons)
Replies
2
Boosts
0
Views
95
Activity
May ’25
DatePicker .graphical style: Inconsistent animation behavior when selecting out-of-range dates
Hi everyone, I’ve noticed an inconsistency in the behavior of SwiftUI’s DatePicker when using the .graphical style with a bounded date range (in:). When a user selects a date (month or year) outside the allowed range: If it's before the lower bound, the picker animates smoothly to the lower bound. BUT if the selected date is after the upper bound, the picker immediately jumps to the upper bound without animation. Note: Using .graphical style with displayedComponents: [.date]. Is this a known issue, and is there any recommended workaround or timeline for a fix? Or is this the intended behavior?
Replies
2
Boosts
0
Views
113
Activity
May ’25
NavigationStack within NavigationSplitView's detail column clears the path when disappearing
I'd like to persist the path on a sidebar selection, so when user comes back to the sidebar selection, they land where they were before. Unexpectedly, the path gets cleared when sidebarSelection is changed from the NavigationStack that uses the path to something else. Is this an intended behavior? How to workaround it? Using TabView is one way, but TabView has its own problems, so I'm wondering if there's a solution within NavigationSplitView first. Here is a minimal reproduce of the issue: struct Home2: View { private enum SidebarSelection: CaseIterable, Identifiable { var id: Self { self } case files, tags } @State private var sidebarSelection: SidebarSelection? = .files @State private var path: [Int] = [] var body: some View { NavigationSplitView { List(SidebarSelection.allCases, selection: $sidebarSelection) { selection in switch selection { case .files: Label("Files", image: "custom.square.stack") case .tags: Label("Tags", systemImage: "grid") } } } detail: { switch sidebarSelection { case .files: NavigationStack(path: $path) { Subview(depth: 1) .navigationDestination(for: Int.self) { Subview(depth: $0) } } case .tags: Text("Tags") default: EmptyView() } } .onChange(of: path) { print("\(path.count)") } } } struct Subview: View { let depth: Int var body: some View { List { NavigationLink("Next: \(depth + 1)", value: depth + 1) } .navigationTitle("Depth \(depth)") } } #Preview("Home2") { Home2() }
Replies
4
Boosts
0
Views
162
Activity
May ’25
Xcode 16 SwiftUI List Fast Scrolling Issue
Hi! When building my app using Xcode 16, fast scrolling (using scrollViewProxy.scrollTo) a list would result in items not appearing even when scrolling stopped. This does not happen when the app is built with Xcode 15, even on iOS 18. I'm also getting this error in the logs: List failed to visit cell content, returning an empty cell. - SwiftUICore/Logging.swift:84 - please file a bug report.
Replies
5
Boosts
6
Views
1.4k
Activity
May ’25
Getting the content of an NSView in an NSImage in OSX15 sequoia
as all the nice system services that were CGWindowListCreateImage, lockFocus are now deprecated, and drastic restictions are imposed to CALayer/renderInContext:, i just cant figure out how to design a single generic obj C method to capture the content of an NSView , whatever this view is ( subclassed or not, layer backed of not ). As simple as that. this was the method, which now no longer works : //============================================================================= +(NSImage*) viewImageShot:(NSView*)view :(BOOL)bFlip //============================================================================= // capture an NSImage of the given view content // pass window.contentView to capture the whole window,cropping the title bar { CGFloat wantedLayer = view.wantsLayer; BOOL wasHidden= view.hidden; view.hidden= NO; view.wantsLayer= YES; NSImage *requiredImage = [[NSImage alloc] initWithSize:view.bounds.size]; [requiredImage lockFocus]; CGContextRef context= [[NSGraphicsContext currentContext] CGContext]; if(bFlip) FlipContext(context, view.bounds.size.height); [view.layer renderInContext:context]; [requiredImage unlockFocus]; view.wantsLayer = wantedLayer; view.hidden = wasHidden; return requiredImage; } Is there here some hope to get some help or direction to acheive this goal ? thanks to those whow will answer.
Topic: UI Frameworks SubTopic: AppKit
Replies
1
Boosts
0
Views
105
Activity
May ’25
New UIButton title left aligned
Hello There, I was trying to do a Button with title left aligned. With the old UIButton, I would have used the title-/contentEdgeInsets to achieve this, but with the new button these values are deprecated and do not work anymore. As far as I understood, with the new button only the spacing between the elements (sub-, title and image) is controllable. I also tried just setting the buttons width to the same width as the label, what would be possible in my case since it should be kind of a "hyperlink-button" which has no background or border. This works so far, but once the user interacts with the button, the title label gets multiline, which is on the one hand not wanted and on the other hand of course does not look left aligned anymore. (Besides the buttons height is fix in my case which leads to clipping of the title) So here again in short: Is there any way to make the title of the new UIButton left aligned inside of the button? Thank you very much in advance.
Replies
2
Boosts
0
Views
1.7k
Activity
May ’25
onReceive(_:perform:) on Frontmost Window Only?
I have a simple document-based application for macOS. struct ContentView: View { @Binding var document: TextDocument var body: some View { .onReceive(NotificationCenter.default.publisher(for: .notificationTextWillAppendSomeTextt), perform: { _ in }) VStack { TextEditor(text: $document.text) } } } extension Notification.Name { static let notificationTextWillAppendSomeTextt = Notification.Name("TextWillAppendSomeText") } Suppose that my application currently has three tabs. If I call a menu command through post(name:object:) this menu command call will affect all three of them. This stackoverflow topic talks about it, too. So how could I tell which window should get a call and others don't? Thanks.
Replies
3
Boosts
0
Views
112
Activity
May ’25
EditMode & EditButton not working in a way I expect
I have something that looks like: NavigationStack { List(self.items, id: \.self, selection: self.$selectedItems) { item in NavigationLink { ItemView(item: item) .environment(\.managedObjectContext, self.viewContext) } label: { LabelWithMenuView(object: item) { ptr in self.labelHandler(item: item, newName: ptr) } } } if self.editMode?.wrappedValue == .active { editButtons } else { TextField("Add Item", text: self.$newItem) .onSubmit { self.addItem() self.newItem = "" } .padding() } } #if os(iOS) .toolbar { EditButton() } .onChange(of: self.editMode?.wrappedValue) { old, new in print("editMode \(old) -> \(new)") } #endif With that layout, the edit button doesn't show up at all; if I put it as part of the List, it does show up, but the first click doesn't do anything; after that, it works, but the onChange handler doesn't show it getting changed, and the editButtons don't go away.
Replies
8
Boosts
2
Views
2.5k
Activity
May ’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
How do I size a UITextView with scroll disabled?
tl;dr: UITextView does not auto layout when isScrollEnabled = false I have a screen with multiple UITextViews on it, contained within a ScrollView. For each textview, I calculate the height needed to display the entire content in SwiftUI and set it using the .frame(width:height:) modifier. The UITextView will respect the size passed in and layout within the container, but since UITextView is embedded within a UIScrollView, when a user attempts to scroll on the page, often they will scroll within a UITextView block rather than the page. They currently need to scroll along the margins outside of the textview to get the proper behavior. Since I am already calculating the height to display the text, I don't want the UITextView to scroll. However, when I set isScrollEnabled = false, the text view displays in a single long line that gets truncated. I have tried Setting various frame/size attributes but that seems to have zero affect on the layout. Embedding the textView within a UIView, and then sizing the container, but then the textView does not display at all. Setting a fixed size textContainer in the layoutManager but did not work. There's a lot of code so I can't copy/paste it all, but generally, it looks like struct SwiftUITextEditor: View { @State var text: AttributedString = "" var body: some View { ZStack { MyTextViewRepresentable(text: $text) } .dynamicallySized(from: $text) } } struct MyTextViewRepresentable: UIViewRepresentable { @Binding var text: AttributedString let textView = UITextView(usingTextLayoutManager: true) func makeUIView(context: Context) -> UITextView { textView.attributedText = text textView.isScrollEnabled = false } ... }
Replies
1
Boosts
0
Views
178
Activity
May ’25
Using App Intents in Live Activity to Pause a Timer
Hello, I am trying to test a concept of a timer stopwatch with Live Activities and integrating buttons like Pause/Resume. When the stopwatch starts, a new Live Activity is created. The stopwatch is managed by the ViewModel, which has functions like start(), pause(), resume(), reset(), and also startLiveActivity(), etc. It uses @AppStorage to store keys like stopWatchModeRaw values, startTimeInterval, etc. The Live Activity state is stored here in the view model using: private var currentActivity: Activity? = nil The Live Activity is started using: private func startActivity() async { guard currentActivity == nil, Activity<StopwatchAttributes>.activities.isEmpty else { if currentActivity == nil { findAndAssignExistingActivity() await updateActivity() } return } let attributes = StopwatchAttributes() let state = StopwatchAttributes.ContentState( .... pass in the content state variables .... ) let content = ActivityContent(state: state, staleDate: nil) do { let activity = try Activity<StopwatchAttributes>.request( attributes: attributes, content: content, pushType: nil ) // Store the activity instance self.currentActivity = activity } catch { print("Error requesting Live Activity: \(error.localizedDescription)") } } and FindAndAssignExistingAcivity does: private func findAndAssignExistingActivity() { if let existingActivity = findActivity(), existingActivity.activityState == .active || existingActivity.activityState == .stale { print("Found existing activity on launch: \(existingActivity.id)") self.currentActivity = existingActivity } else { print("No existing activity found on launch.") self.currentActivity = nil } } UpdateActivity if the activity exists with a guard statement, and then update the activity. This is also used when the user taps Pause in the Stopwatch. The main issue I am facing is with the PauseIntent, it can't find the Live Activity and will always exit at that guard statement. struct PauseIntent: AppIntent { static var title: LocalizedStringResource = "Pause Stopwatch" func perform() async throws -> some IntentResult { guard let defaults = UserDefaults(suiteName: appGroupID) else { return .result() // Simple failure } let currentModeRaw = defaults.integer(forKey: "stopwatchModeRawValue") let currentMode = StopwatchMode(rawValue: currentModeRaw) ?? .reset let startTimeInterval = defaults.double(forKey: "startTimeInterval") // TimeInterval when current running segment started let accumulatedTime = defaults.double(forKey: "accumulatedTime") guard let activity = Activity<StopwatchAttributes>.activities.first else { Self.logger.error("PauseIntent EXIT: No Live Activity found to update. (Activity<StopwatchAttributes>.activities is empty)") return .result() // EXITING HERE, No Live Activity Found, there was nothing found to update... -> It always exits here } followed by rest of the code to update the state of the live activity, but it never executes because the activity = Activity.activities.first always returns false. What seems to be the issue? 1 .Is the method wrong to check for the live activity before attempting to Pause? 2. Can the Live Activity actually Pause the Stopwatch Timer in the main App since the Live Activity is actually a Widget Extension and not the App itself, so it cannot see the data directly?
Replies
1
Boosts
0
Views
144
Activity
May ’25
UserDefaults.standard was cleared and app UUDI is also changed when I update new version from app store
Facing issue of NSUserDefaults data got cleared on update new version from app store. so all data of user got cleared and user have to login again. I was having app in store with version 1.1.3 and then we have uploaded new version to store with version 1.1.4 but when user download app from store their data was cleared from UserDefaults.so this is big issue in update. need to help. is that apple updated any process on update. Question How Apple change version build in device when we update app from app store. is it uninstall old build and install new build ? Or it is install new version on old version ? Should UserDefaults.standard will delete on update ? Updating Provisioning profile from manual to automatically cause issue on UserDefaults.standard Like UserDefaults got cleared and uuid will change ? Do we have anythings that we can identify specific user as uniq user ? What is better solution to store login data into SQLite store or in UserDefaults as model ? Will appreciate for your help. this is very big issue and login again on update will make app user more effect
Replies
4
Boosts
1
Views
4.0k
Activity
May ’25
Any way to remove the persistent "Allow Paste" pop up after user has given permission?
My app makes constant use of copy paste, allowing the user to past links into the app as a core function. Unfortunately users are forced to press the "Allow Paste" button every single time they copy paste, which in my app is constantly. Also the default option is "Deny" even after the user has previously given permission. Is there any way to eliminate the pop up after the user has given permission to the app? I would propose that there be a third option for "Always Allow" paste from this app for the user to select which would silence subsequent pop ups. If the goal is to make a seamless experience for users then we need to consider if we are making things too difficult in the name of security?
Replies
3
Boosts
0
Views
112
Activity
May ’25
How to create a QuickTime recording like panel?
QuickTime recording palette behaves in a way which I want to replicate in my desktop app - specifically the behaviour when switching spaces, it appears on top. Currently, my app appears on all spaces, and even over fullscreen applications BUT it already exists when I switch to the space, this feels disjointed. I can't find a solution to this behaviour. Here's the Window Collection Behaviours I've tried (on an NSPanel): FullScreenAuxiliary - appears over fullscreen apps. CanJoinAllSpaces - appears on all spaces. These two options make the dock show up on all spaces in the same position, but on each space they already exists. I've tried this behaviour too: MoveToActiveSpace - which as per docs would move the window into active space only when its reopened, mine stays open all the time. I can't find any more information on how QuickTime achieves this.
Topic: UI Frameworks SubTopic: SwiftUI
Replies
0
Boosts
0
Views
73
Activity
May ’25
memory leak upon mouse down in a NSTextField
Dear all, Sorry if the topic has already been commented but I could not be able to find it in over 10,000 picks using the forum search field... My problem is that with any NSTextField in my app, a click will result in a memory leak. There is no code attached, just bindings to NSNumber properties. How can I fix this ? Thanks for your help. Best regards Chris
Topic: UI Frameworks SubTopic: AppKit
Replies
0
Boosts
0
Views
74
Activity
May ’25