Explore the art and science of app design. Discuss user interface (UI) design principles, user experience (UX) best practices, and share design resources and inspiration.

All subtopics
Posts under Design topic

Post

Replies

Boosts

Views

Activity

Liquid glass - precent automatic color changes
I have an app that displays a MapView. While I am in light mode everything is fine. I can scroll around the map and my overlays (made by UIVisualEffectView containing an UIGlassEffect) stay light and look well! As soon as I change my phone to dark mode, depending on what's underneath the buttons (a light residential area or darker wooded areas) some of my buttons change color. But not all, only where it's supposedly lighter or darker underneath. This makes my whole UI look strange. Some buttons bright, some dark. Is there a way to lock a "color" or interfaceStyle to the effects-view? In light mode everything is fine, but in dark mode it just looks super strange.
Topic: Design SubTopic: General Tags:
0
0
1.1k
Sep ’25
iOS26 CarPlay not optimized for Subaru 11.6 inch vertical in infotainment screen
The newest iOS 26 CarPlay upgrade seems more like a downgrade with vehicles from Subaru with the 11.6 inch vertical infotainment display. Such a big screen, but only one widget shows at a time additionally, prior to this iOS update we had three lines of apps on the main page now only two. also to be noted album art size on all music streaming and podcast apps is extremely small about half the size of what it originally was prior to this update yes, I tried turning on and off the screen optimization setting and CarPlay. It did not do anything.
0
1
441
1w
SF Symbols Variable Draw without the background.
Is it possible to use the new variable draw feature for a custom SF Symbol without it leaving the background behind it when it is not drawn? I am trying to make a tally icon that is drawn with the variable draw, but it doesn't look good if the tally is visible in the background before it is drawn.
Topic: Design SubTopic: General Tags:
0
0
62
Jun ’25
Exception occurred during startRunning and stopRunning calls using AVCaptureSession
I called the viewWillDisappear method in UIViewController AVCaptureSession *session = self.session; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ if (!session.running) { [session startRunning]; } }); I called the viewWillDisappear method dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ AVCaptureSession *session = self.session; if (session && session.running) { [session stopRunning]; } }); But when the user exits the background and returns to the current page, clicking 'Return' will cause an exception Abnormal information: #36 Thread SIGSEGV SEGV_ACCERR libdispatch.dylib _dispatch_source_set_timer + 32 one PrivacyAccounting 0x00000001a5ede000 + 533590244180685288 two PrivacyAccounting 0x00000001a5ede000 + 533590244180685288 three PrivacyAccounting 0x00000001a5ede000 + 1236823037899193652 four libdispatch.dylib 0x000000018ea01000 + 3414669699500290324 libsystem_pthread.dylib _pthread_wqthread + 14360117738498687264
Topic: Design SubTopic: General
0
0
218
Nov ’24
iOS 18.2 public beta error
Hello I’m here to post my recent updates errors and bugs on iOS 18.2 After installing after few hours my screen display was flashing like thunder I notice two times first I tot its video second time realised it was error after that screen got green color and brightness increased when check with settings black screen became green. i tried calling customer support they asked me to backup the device and turn off beta updates and reinstall the software using computer. but I don’t want to downgrade becoz I got lost gbs of photos videos and some datas stored on app sometimes I can backup and restore photos and video but I don’t want to miss out other important datas stored on app specially. Please some one help me and suggest me how to downgrade to iOS 18.1 another question shall wait for next update coming in December while waiting any damage will happen to my screen display or to my battery?? Pls help me
Topic: Design SubTopic: General
0
0
763
Nov ’24
NWListener, NWConnection, not accepting connections
I'm using NWListener with NWConnection. This code work great and I am able to start the listener and successfully receive connections in Xcode preview. However, when I build/run on my phone, the listener does not seem to accept connections from the network. If the app sends a message to itself on the phone, it is received, but if I send a message to that ip/port from another network device, it is not accepted/received. Any help or suggestions appreciated. import Foundation import Network import Combine @Observable class UDPListener3 { var listener: NWListener? var queue = DispatchQueue.global(qos: .userInitiated) var messageReceived: Data? private(set) var isReady: Bool private(set) var listening: Bool = false private(set) var receiving: Bool = false private(set) var port: UInt16 = 0 init () { isReady = false listening = false receiving = false messageReceived = nil listener = nil } func GetPort() { var portText = "\(String(describing: listener!.port))" portText = portText.replacingOccurrences(of: "Optional(", with: "") portText = portText.replacingOccurrences(of: ")", with: "") portText = portText.replacingOccurrences(of: ",", with: "") port = UInt16(portText)! if let testPort = listener?.port?.rawValue { self.port = testPort } } func config(port: Int) { if port > 0 { configinit(port: NWEndpoint.Port(integerLiteral: NWEndpoint.Port.IntegerLiteralType(port))) } else { configinit(port: nil) } } func configinit(port: NWEndpoint.Port?) { // conifigure and create listener let params = NWParameters.tcp params.allowFastOpen = true if port == nil { self.listener = try? NWListener(using: params, on: .any)//port) } else { self.listener = try? NWListener(using: params, on: port!) } if listener != nil { GetPort() self.listening = true self.listener?.stateUpdateHandler = { [self] update in switch update { case .ready: self.isReady = true print("*Listener.ready on port \(String(describing: self.listener?.port))") GetPort() case .failed: // Announce we are no longer able to listen self.listening = false self.isReady = false print("*Listener.failed on port \(port)") case .cancelled: // Announce we are no longer able to listen self.listening = false self.isReady = false print("*Listener.canceled on port \(port)") default: print("*Listener default connecting to port \(port)... \(self.listener!.state)") } print() } self.listener?.newConnectionHandler = { connection in print("@called listener.newConnectionHandler") self.createConnection(connection: connection) } // start listening self.listener?.start(queue: self.queue) GetPort() } else { print("unable to start listener") } } func createConnection(connection: NWConnection) { connection.stateUpdateHandler = { (newState) in switch (newState) { case .ready: print(" ...Connection.ready")// - \(connection)") self.receive(connection) case .cancelled: print(" ...Connection.cancelled")// - \(connection)") case .failed: print(" ...Connection.failed")// - \(connection)") default: print(" ...Connection.default: \(connection.state)")// - \(connection)") } } print(" ...connection starting") connection.start(queue: .global()) } func receive(_ connection: NWConnection) { print() print(" ...connection receiving") // respond 200 received self.respond(on: connection) //connection.receiveMessage() { [self] data, context, isComplete, error in //<-- this would not return until timeout expired?? connection.receive(minimumIncompleteLength: 20000, maximumLength: 200000) { [self] data, context, isComplete, error in receiving = true /* Check what we have */ var message = "" if data != nil { message = String(decoding: data!, as: UTF8.self) } else { message = "" } // ERROR if let unwrappedError = error { print(" >>ERROR: received in \(#function) - \(unwrappedError)") receiving = false return } // NO DATA guard let data = data else { print(" >>NO DATA with context - \(String(describing: context))") receiving = false return } // NOT COMPLETE if !isComplete { print(" >>NOT COMPLETE with context - \(String(describing: context))") //return } // RECEIVED A MESSAGE if message != "" { self.messageReceived = data print(" ...received data - \(String(describing: context)) \(String(describing: data))") receiving = false connection.cancel() return } // keep receiving, self.receive(connection) } } } func respond(on connection: NWConnection) { let response = """ HTTP/1.1 200 OK Content-Length: 2 OK """ connection.send( content: response.data(using: .utf8), completion: .idempotent ) } func cancel() { self.listener?.cancel() self.listener = nil self.listening = false self.isReady = false print("listener disabled") } }
Topic: Design SubTopic: General
0
0
421
Nov ’24
Need Help with Guideline 4.2 - Minimum Functionality
I recently got feedback for my app under Guideline 4.2 - Design - Minimum Functionality, and I’m a bit confused. Apple mentioned that the app isn’t “app-like” enough and doesn’t provide sufficient entertainment value or utility. However, I genuinely think my app is unique compared to others on the market. Most similar apps only offer basic features like scorekeeping and saving the game. My app goes beyond that by tracking detailed statistics based on the types of scores achieved during the game. At the end, there’s even a Player Ratings section, which enhances competition and makes the experience more fun for players. Additionally, in today’s gaming scene, many groups play the traditional 101 game with a reward and penalty system. My app uniquely incorporates a reward system, something no other app in the market currently offers. I believe my app has the potential to stand out and meet the needs of a wide audience. Has anyone faced similar feedback? Or does anyone have suggestions on how I could better address this issue? Thanks in advance! 😊
0
0
521
Dec ’24
A phone keyboard layout for easy typing!
Last November 13 I came up with a phone keyboard layout (strategy) that can make key size bigger hence less mistyping. The typical phone keyboard looks like this: My proposed keyboard looks like this: Essentially, it's a split keyboard with the left-hand part stacked above/below the right-hand part. Key size/width/height and the vertical distance between the left-hand part and right-hand part may be adjustable to suit different phone widths and user hand sizes. You guys can show the proposed keyboard's image on your phone and fit this keyboard to your phone width so you can actually simulate typing on it to see how it feels. On my phone, the letter keys in it are a little too big for my thumbs to reach the farthest keys, but as I said, key size should be adjustable to suit different phone widths and user hand sizes.
0
0
661
Oct ’24
Gray Shades That Adapt to Dark Mode
Hi, Normally we need many shades of gray in any App and Apple system have only 3 , Primery, Secondary, and Gray, so to make Gray regress that automatically adapt to Dark Mode we just use opacity on these colors ? there's no system built in Gray degrees ? Kind Regards
Topic: Design SubTopic: General
0
0
66
May ’25
Liquid Glass icons appear differently in Dock
I just played around on macOS with the new icons created by Icon Composer, and I noticed that the Dock displays programmatically set icons differently. Try this: Make sure you have the Mail app in your Dock. Set the icon appearance to "Tinted/Light" and set a dark (black) background for the Desktop. Run this code: let image = NSWorkspace.shared.icon(forFile: "/System/Applications/Mail.app") if image.isValid { NSApp.applicationIconImage = image } You'll get something like this: When the icon appearance is set to "Default" or "Dark," everything works as expected, and the "Clear/Dark" and "Tinted/Dark" modes seem to work as well. It seems like the Dock uses a special blend mode depending on the selected background, but this does not seem to be the case if the icon is set programmatically. I filed feedback FB20291186.
0
1
606
1w
The usage license of Apple fonts
Hello, I am an app developer from China. We are developing a mobile game that will be released on iOS and Android platforms (as well as some PC and Mac platforms). The game is a commercial app. My question is: we would like to use the "PingFang" Chinese font in our game software. Do we need to obtain a license, and how should we go about obtaining it? (For example, through which channels should we apply for the license, and what are the associated fees?)
Topic: Design SubTopic: General Tags:
0
0
495
Oct ’24
About tvOS Material (design resource)
I noticed a discrepancy between the Material specifications for tvOS on the Developer page and the naming in the Design Resources (Sketch files). Which one should we consider authoritative? Apple developer design web page:https://developer.apple.com/design/human-interface-guidelines/materials design resource(sketch)
Topic: Design SubTopic: General
0
0
43
Apr ’25
App Icon issue in Wallet app
Hi, Upon reviewing our app, we got feedback that our app icon within the Wallet app is not behaving as expected when the home screen is set to "light mode" only. In that case, on the home screen, the app icon remains its default color (e.g., red), regardless of the device's appearance settings (light or dark), which is expected. However, in the apple Wallet, e.g., under the From Apps from your device, app icons change their color (e.g., red in light mode, black in dark mode) when iOS appearance is changed - which is reported as an app issue. I've noticed that all apps in that section are changing the color, not just ours, so it seems to me like a bug in iOS or a behavior that was not clearly defined in the app store guidelines. If there is an API we must use to cover that case, which one would that be? Is this a bug that Apple should resolve, or is this the intended behaviour?
0
2
374
Aug ’25
Macos26 Tahoé is Hell with "Relocated Items"
I just discover that feature (a folder lost in the middle of others desktop folder ). so with each updates: -/usr/local is emptied -somes apps in the Application folder, are deleted, even paid apps .. -i lost : Docker, python 3.13, latexlive2025, Apache NetBeans, java install, Affinity Publisher 2, all my 3D slicers ... github desktop, Epic Games Launcher, ........ 296go of apps Franckly : c'est la merde !!! I am using a MacBook Pro 16" 2019 any way to stop this behavior ? thank you !!!
Topic: Design SubTopic: General
0
0
631
1w
Contact UISearchBar missing.
Feedback id: FB16140301 Below are the steps to reproduce the bug in Contacts app. Open Contacts app. Now search for a contact and didSelect that contact. Now slightly hold swipe right(from view's center leading position) as to pop the view but not fully swipe, now release the finger and you can see the back nav bar button missing and tapping the back button position also doesn't perform dismiss action. Now do fully swipe from left to right to dismiss(pop) current view. Here you can see the search bar missing.-> That's the bug.
0
1
68
Jun ’25
SwiftData and #DEBUG with the canvas...
Hi all, Very new to this. Just getting into swift data, and am frustrated with the canvas not working with modelContainers in SwiftData. My understanding is that they work if inMemory = true, but not in the default case where data is persistent after an app is quit. Can anyone tell me if it is possible to conditionally create the modelContainer type based on a flag... If Bool:Canvas then inMemory = True, Else False... Then using this flag for all data models so my list views populate on the canvas, without having to run the simulator each time... I would assume you could also pre-populate the inMemory option if it is empty also... Or is there a simple and obvious solution that I am oblivious to. If it is possible, is it worth the time, hassle, and any possible issues?
0
0
519
Dec ’24