Create elegant and intuitive apps that integrate seamlessly with Apple platforms.

All subtopics
Posts under Design topic

Post

Replies

Boosts

Views

Activity

SSC Distinguished Winner here😃! I created the1st game 100 % using Apple Pencil to interact. Interested in joining our DC?
Hey everyone, I'm beyond excited to share that I've been selected as a Distinguished Winner in this year's Swift Student Challenge! 🎉 It all started last summer, in the middle of a Western Culture class. I was zoning out , and my attention drifted to the Apple Pencil in my hand. And then ,it hit me — this thing is literally a next-level game controller. Think about it: pixel-perfect precision, haptic feedback, multiple built-in sensors... Why aren't we using this for gaming? And that got me thinking — why have we spent the last 500 years treating the "pencil" as just a tool for creation, and not for play? Since graphite pencils were invented in 1564, we've had this incredibly natural way to interact with 2D and 3D space... and nobody's fully tapped into it for games. So, I did something about it. I built a game that's 100% controlled by the Apple Pencil yep, just the Pencil. I know what you're thinking: "How does that even work??" And honestly, I'd love to tell you... but I'm in the final stages of getting it onto the App Store, and it should be live within the next couple of weeks. So for now... 🤐😄 In the meantime, I've set up a Discord server for anyone who's curious about the gameplay, the design, or just wants to brainstorm ideas with me. If you're into creative controls, game design, or just want to hang — come join the conversation! [Join the Discord here!] https://discord.gg/5Rm8WKbekf Can't wait to share more soon!
0
0
239
Sep ’25
Avoid using a segmented control in a toolbar
Hi, in the Human Interface Guidelines, Apple writes: Avoid using a segmented control in a toolbar. Toolbar items act on the current screen — they don’t let people switch contexts like segmented controls do. Along with this image: Source I'm confused by this example. The screenshot seems to be showing a segmented control in a toolbar. Is this saying that the Phone app's All/Missed toggle is different from a segmented control? Under iOS 26 it seems to take a different style compared to a regular segmented control. If so, which component is used to create this filter? Could you please clarify the guidelines? Thank you.
1
0
373
Sep ’25
Fous, FocusState and Architecture
I am currently struggling with resolving what appear to be competing design issues, and (while I may be just demonstrating my own ignorance) I would like to share my thoughts in the hope that you may have useful insights. For purposes of discussion, consider a large and complex data entry screen with multiple sections for input. For all of the usual reasons (such as reuse, performance management, etc) each of these sections is implemented as its own, separately-compiled View. The screen is, then, composed of a sequence of reusable components. However, each of these components has internal structure and may contain multiple focusable elements (and internal use of .onKeyPress(.tab) {...} to navigate internally). And the logic of each component is such that it has an internal @FocusState variable defined with its own unique type. So, obviously what I want is on the one hand, to provide a tab-based navigation scheme for the screen as a whole, where focus moves smoothly from one component's internals to the next component, and on the other hand ,to build components that don't know anything about each other and have no cross-component dependencies, so that they can be freely reused in different situations. And that's where I'm stuck. Since focus state variables for different components can have different types, a single over-arching FocusState passed (as a binding) to each component doesn't seem possible or workable. But I don't know how else to approach this issue. (Note: in UIKit, I've done things like this by direct manipulation of the Responder Chain, but I don't see how to apply this type of thinking to SwiftUI.) Thoughts?
3
0
167
Oct ’25
Navigation Bar Title Hidden When Right Bar Button Title Is Long (iOS 26)
I’m developing an app that includes a navigation bar with a centered title and a single right bar button item. I’ve noticed that when both the navigation bar title and the right bar button item’s title are relatively long, the navigation bar title becomes hidden. This issue only occurs on iOS 26. When running the same code on iOS 18, the layout behaves as expected, with both elements visible. Has anyone else experienced this behavior on iOS 26? Is this a known layout change or a possible bug?
1
0
529
Nov ’25
Sheet background in share extension ignores Liquid Glass effect in iOS 26/Xcode 26
I’m developing a share extension for iOS 26 with Xcode 26. When the extension’s sheet appears, it always shows a full white background, even though iOS 26 introduces a new “Liquid Glass” effect for partial sheets. Expected: The sheet background should use the iOS 26 glassmorphism effect as seen in full apps. Actual behavior: Custom sheets in my app get the glass effect, but the native system sheet in the share extension always opens as plain white. Steps to reproduce: Create a share extension using UIKit Present any UIViewController as the main view Set modalPresentationStyle = .pageSheet (or leave as default) Observe solid white background, not glassmorphism Sample code: swift override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .clear preferredContentSize = CGSize(width: UIScreen.main.bounds.width, height: 300) } Troubleshooting attempted: Tried adding UIVisualEffectView with system blur/materials Removed all custom backgrounds Set modalPresentationStyle explicitly Questions: Is it possible to enable or force the Liquid Glass effect in share extensions on iOS 26? Is this a limitation by design or a potential bug? Any workaround to make extension sheet backgrounds match system glass appearance?
2
0
165
2w
Extra unwanted space in main window
Hi there! I'm having this issue with my main windows. I'm having a big space on top of that without any logic explanation (at least for my poor knowledge). Using the code below I'm getting this Windows layout: Does anybody have any guidance on how to get out that extra space at the beginning? Thanks a lot! import SwiftUI import SwiftData #if os(macOS) import AppKit #endif // Helper to access and control NSWindow for size/position persistence #if os(macOS) struct WindowAccessor: NSViewRepresentable { let onWindow: (NSWindow) -> Void func makeNSView(context: Context) -> NSView { let view = NSView() DispatchQueue.main.async { if let window = view.window { onWindow(window) } } return view } func updateNSView(_ nsView: NSView, context: Context) { DispatchQueue.main.async { if let window = nsView.window { onWindow(window) } } } } #endif @main struct KaraoPartyApp: App { @StateObject private var songsModel = SongsModel() @Environment(\.openWindow) private var openWindow var body: some Scene { Group { WindowGroup { #if os(macOS) WindowAccessor { window in window.minSize = NSSize(width: 900, height: 700) // Configure window to eliminate title bar space window.titleVisibility = .hidden window.titlebarAppearsTransparent = true window.styleMask.insert(.fullSizeContentView) } #endif ContentView() .environmentObject(songsModel) } .windowToolbarStyle(.unifiedCompact) .windowResizability(.contentSize) .defaultSize(width: 1200, height: 900) .windowStyle(.titleBar) #if os(macOS) .windowToolbarStyle(.unified) #endif WindowGroup("CDG Viewer", id: "cdg-viewer", for: CDGWindowParams.self) { $params in if let params = params { ZStack { #if os(macOS) WindowAccessor { window in window.minSize = NSSize(width: 600, height: 400) // Restore window frame if available let key = "cdgWindowFrame" let defaults = UserDefaults.standard if let frameString = defaults.string(forKey: key) { let frame = NSRectFromString(frameString) if window.frame != frame { window.setFrame(frame, display: true) } } else { // Open CDG window offset from main window if let mainWindow = NSApp.windows.first { let mainFrame = mainWindow.frame let offsetFrame = NSRect(x: mainFrame.origin.x + 60, y: mainFrame.origin.y - 60, width: 800, height: 600) window.setFrame(offsetFrame, display: true) } } // Observe frame changes and save NotificationCenter.default.addObserver(forName: NSWindow.didMoveNotification, object: window, queue: .main) { _ in let frameStr = NSStringFromRect(window.frame) defaults.set(frameStr, forKey: key) } NotificationCenter.default.addObserver(forName: NSWindow.didEndLiveResizeNotification, object: window, queue: .main) { _ in let frameStr = NSStringFromRect(window.frame) defaults.set(frameStr, forKey: key) } } #endif CDGView( cancion: Cancion( title: params.title ?? "", artist: params.artist ?? "", album: "", genre: "", year: "", bpm: "", playCount: 0, folderPath: params.cdgURL.deletingLastPathComponent().path, trackName: params.cdgURL.deletingPathExtension().lastPathComponent + ".mp3" ), backgroundType: params.backgroundType, videoURL: params.videoURL, cdfContent: params.cdfContent.flatMap { String(data: $0, encoding: .utf8) }, artist: params.artist, title: params.title ) } } else { Text("No se pudo abrir el archivo CDG.") } } .windowResizability(.contentSize) .defaultSize(width: 800, height: 600) WindowGroup("Metadata Editor", id: "metadata-editor") { MetadataEditorView() .environmentObject(songsModel) } .windowResizability(.contentSize) .defaultSize(width: 400, height: 400) WindowGroup("Canciones DB", id: "canciones-db") { CancionesDBView() } .windowResizability(.contentSize) .defaultSize(width: 800, height: 500) WindowGroup("Importar canciones desde carpeta", id: "folder-song-importer") { FolderSongImporterView() } .windowResizability(.contentSize) .defaultSize(width: 500, height: 350) } .modelContainer(for: Cancion.self) // Add menu command under Edit .commands { CommandGroup(replacing: .pasteboard) { } CommandMenu("Edit") { Button("Actualizar Metadatos") { openWindow(id: "metadata-editor") } .keyboardShortcut(",", modifiers: [.command, .shift]) } CommandMenu("Base de Datos") { Button("Ver Base de Datos de Canciones") { openWindow(id: "canciones-db") } .keyboardShortcut("D", modifiers: [.command, .shift]) } } } init() { print("\n==============================") print("[KaraoParty] Nueva ejecución iniciada: \(Date())") print("==============================\n") } }
0
0
59
Nov ’25
4.3(b) Rejection for 7 year old app Update
My game has been live since 2018 and I’ve been updating it recently to add some improvements because it’s been a few years (last update was 2020). I got hit with a couple of basic issues with the screenshots but I was told I can release that version anyway and fix it in a later update. I spent yesterday fixing those issues because they were minor, and resubmitted my app to review. This morning I was hit with another rejection for a new issue, 4.3(b) Design Spam. The reason being it’s a game in a saturated category (Beer Pong) and so I should reconsider the app concept. This game has been live for 7 years. In those 7 years the category may have become saturated, but it wasn’t when I originally released it, so stopping me from updating it feels extremely unfair. If this was a brand new app I would still be upset but I would understand. Another reason was that it’s based on a drinking game, and that it encourages people to drink alcohol. I stated in the age rating section that it heavily contains alcohol references, although you never actually see anyone drinking. There are Beer Pong games that feature characters drinking the beer, mine is so inextreme in comparison. What bugs me the most is if I hadn’t fixed the screenshots it would be live by now, yet I feel I’m being punished for following the rules. Can anyone on here give me some advice on how to proceed? I have to say this entire dilemma has really taken the wind out of my sails. If this update doesn't get accepted I'll have wasted about two months of development time I could've spent on a different project.
1
0
117
Nov ’25
Modal Shadows - In App Purchases (macOS)
Hey, everyone. I'm having an issue with my modal shadows when building for macOS. I've attached an image to show you what's going on. I have a rounded corner window, and when the In-App Purchase overlay opens, the modal shadow of that rounded window is square (which doesn't make sense, and looks bad). Can somebody please help me address this? I've tried searching high and low for a solution but I can't find anything :-( I really appreciate you taking a look! -Logan
1
0
1.7k
Nov ’25
TabView Background Color
Hello I'm trying to use a TabView inside of the Sidebar in a NavigationSplitView. I'm wanting to use .listStyle(.sidebar) in order to get the Liquid Glass effect. However I can not find a way to remove the background of the TabView without changing the behavior of the TabView itself to paging with .tabViewStyle(.page) NavigationSplitView { TabView( selection: .constant("List") ) { Tab(value: "List") { List { Text("List") } } } } detail: { } Note: I wanting change the background of the TabView container itself. Not the TabBar.
0
0
84
Nov ’25
EditButton selection gets cleared when confirmationDialog appears in SwiftUI List
I'm experiencing an issue where my List selection (using EditButton) gets cleared when a confirmationDialog is presented, making it impossible to delete the selected items. Environment: Xcode 16.0.1 Swift 5 iOS 18 (targeting iOS 17+) Issue Description: When I select items in a List using EditButton and tap a delete button that shows a confirmationDialog, the selection is cleared as soon as the dialog appears. This prevents me from accessing the selected items to delete them. Code: State variables: @State var itemsSelection = Set<Item>() @State private var showDeleteConfirmation = false List with selection: List(currentItems, id: \.self, selection: $itemsSelection) { item in NavigationLink(value: item) { ItemListView(item: item) } } .navigationDestination(for: Item.self) { item in ItemViewDetail(item: item) } .toolbar { ToolbarItem(placement: .primaryAction) { EditButton() } } Delete button with confirmation: Button { if itemsSelection.count > 1 { showDeleteConfirmation = true } else { deleteItemsSelected() } } label: { Image(systemName: "trash.fill") .font(.system(size: 12)) .foregroundStyle(Color.red) } .padding(8) .confirmationDialog( "Delete?", isPresented: $showDeleteConfirmation, titleVisibility: .visible ) { Button("Delete", role: .destructive) { deleteItemsSelected() } Button("Cancel", role: .cancel) {} } message: { Text("Going to delete: \(itemsSelection.count) items?") } Expected Behavior: The selected items should remain selected when the confirmationDialog appears, allowing me to delete them after confirmation. Actual Behavior: As soon as showDeleteConfirmation becomes true and the dialog appears, itemsSelection becomes empty (count = 0), making it impossible to delete the selected items. What I've Tried: Moving the confirmationDialog to different view levels Checking if this is related to the NavigationLink interaction Has anyone encountered this issue? Is there a workaround to preserve the selection when showing a confirmation dialog?
1
0
144
Nov ’25
Reliable Alternative for Google Sign-In with AWS Cognito on iOS (React Native)
I’m developing a React Native application using AWS Cognito Hosted UI with Google Sign-In for authentication.My setup uses: React Native: 0.76.9 Library: react-native-app-auth version 8.0.3 Xcode Minimum Deployment Target: 13.4 The same implementation works perfectly on Android, but on iOS it behaves inconsistently. Here’s the issue: Login flow completes successfully. However, access tokens and ID tokens are often null or malformed on iOS. This results in 401 Invalid Token errors when calling backend APIs. I’ve also tried using react-native-inappbrowser-reborn, but the issue persists.I’m currently using both the client ID and reverse client ID correctly as callback URLs in Cognito’s configuration". So my questions are: "Is it better to continue using react-native-app-auth and @react-native-google-signin/google-signin with improved configuration for iOS? Or is there a more reliable approach/library for handling Cognito authentication and token management on iOS (especially for Hosted UI with Google Sign-In)? Looking forward to any suggestions or best practices from those who’ve implemented Cognito + Google Sign-In on iOS using React Native.If you’ve found a stable setup for managing tokens and callbacks on iOS, please share your approach". Thank you!
1
0
97
Nov ’25
SwiftUI: Menu icon will missing if increase preferred text size
iOS simulator version 18.0+ I have a demo like this: Menu { Button { } label: { Text("Option 1") Image(systemName: "star") } Button { } label: { Text("Option 2") Image(systemName: "star") } } label: { Text("Menu") } And I used the tool Accessibility Inspector to modify the text size. Case 1: We could see the option title and the star icon. Case 2: But we could not see the icon, only the option title here Is this by design from Apple? Or does this need to be fixed? Does anyone know about my question?
0
0
71
Nov ’25
Inquiry Regarding Siri–AI Integration Capabilities
: Hello, I’m seeking clarification on whether Apple provides any framework or API that enables deep integration between Siri and advanced AI assistants (such as ChatGPT), including system-level functions like voice interaction, navigation, cross-platform syncing, and operational access similar to Siri’s own capabilities. If no such option exists today, I would appreciate guidance on the recommended path or approved third-party solutions for building a unified, voice-first experience across Apple’s ecosystem. Thank you for your time and insight.
0
0
64
Nov ’25
《维1847933278》腾龙公司游戏怎么下载怎么注册账号
腾龙:----TL 9655. C0M-----创办于1998年,总部位于缅甸掸邦老街,是果敢四大家族之一企业的产业。该集团旗下子公司超过多家,员工达上万余人。明面上主要经营文旅、酒店、房地产等产业,如2019年正式运营的腾龙大酒店,曾是当地最豪华的酒店,同年还启动运营了新天地房地产项目。此外,2023年在佤邦建设的新盛大酒店于2023年正式运营,2023年在新盛大酒店也正式运营。
0
0
161
Nov ’25
BLE Problem
I have an app that uses BLE to connect to access doors. Since iOS 26, when it hasn't connected to any doors for a while, it deactivates, whereas in older versions of iOS it continues to work all day without stopping. Has anyone else experienced this? I've found problems with people who have had the same issue since upgrading to the latest version of iOS 26. Is there a known issue with BLE in iOS 26? I haven't found any official information. thnks
1
0
98
4w
Window Title Justification OS 26 Tahoe
I am working on a Mac App that was developed with Objective C and Interface Builder. In earlier versions of Mac OS the window title was centered. Now in Tahoe it's left-justified. Is there some way to set this? There is no setting for this in Interface Builder and I can't see any way to do it programmatically by reading the developer documentation. Is this even possible?
Topic: Design SubTopic: General Tags:
2
0
846
3w
App icon not displaying correctly in AppStore
I'm having a strange issue with my iOS app icon rendering in the App Store - it seems to be low-res and clipping part of the image. I updated the icon in Icon Composer to apply the liquid glass overlay for the new build. It looks fine on the device and the asset itself isn't corrupted. I think it might be a resolution issue since the small icon thumbnails in App Store Connect have the same problem, but they look fine when I click through to the larger preview. Has anyone else run into this and figured out a fix?
0
0
80
1w