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

ipados 26 and xib
hi, i have an objc ipad application that use xib with zooming for adapt to the screen (until ios18) but with ipad os 26 will be displayed wrong
Topic: Design SubTopic: General
6
0
196
Jul ’25
List View within a Scrollview
The bane of my existence has been designing interfaces where the whole view needs to scroll, but a portion is a List and the other portion is static. I run into this problem time and again so I was hoping someone has a good solution because we all know that embedding a List view inside ScrollView is a no-go within SwiftUI. It simply doesn't work. So what is a best practice when you need the whole screen to scroll, but a portion is a List? Use a navigation stack instead of a ScrollView? What if it's a child view of a navigation stack already?
Topic: Design SubTopic: General Tags:
2
0
771
Jul ’25
SF Symbols 7
Will the draw (animation) functionality of SF Symbols be available when symbols are cut/pasted into a Keynote presentation? Better yet, will the draw tools from SF Symbols 7 be available in Keynote for objects created in Keynote?
Topic: Design SubTopic: General Tags:
1
0
172
Jun ’25
Handling Context Save Errors
I was wondering if errors are common for the code below for saving SwiftData data and what would be the best way to handle them (popup, closing the app)? do { try modelContext.save() } catch { print("error") }
Topic: Design SubTopic: General Tags:
1
0
223
2w
Core database relationship are only partially updating.
I created a data structure based on a dictionary of words. The purpose is to link each word to all other words made up of the same letters plus one. Example: table -> ablate, cablet, tabled, gablet, albeit, albite, etc. For this I built a data model made of three entities: Word, Draw, Link. A Draw is a set of letters corresponding to a Word and sorted in alphabetic order, like : HOUSE -> EHOSU. A Link is a letter that you add to a Draw to get another Draw. So my data model looks like this: And here is how I implemented it in Xcode: Entity Word (let's forget the attribute optComp that plays no role here) Entity Draw Entity Link I am populating the data in two steps: first I read a list of words from a .txt source and I populate the Word entity and at the same time the Draw entity with the corresponding relationship (function loadDic()) This first step apparently works fine. I can easily find all anagrams of any word with something like word.sort.word.spelling I read through the Draw entity. For each draw I seek all existing +1 draws considering each letter of the alphabet. If there are, I create a Link and add the relationships (function createLinks()) Here is where something goes wrong. If the Link's and the relationship Draw.plus seem to be correctly created, the other relationship Link.gives is only partially populated, say 50%. Moreover, I tried to apply an additional routine (updateLinks()) , focusing only on Link's with an empty Link.gives relationship and updating them. But again, only 50% of the nil relationships appear to be populated. I could not find out why those relationships are not properly populated. If someone can help me out I would be grateful. Here is the code: LoadDic() function (OK) : func loadDic() { print("Loading dictionary...") dataAlreadyLoaded.toggle() guard let url = Bundle.main.url(forResource: INPUT_FILE, withExtension: "txt") else { fatalError("\(INPUT_FILE).txt not found") } if let dico = try? String(contentsOf: url, encoding: String.Encoding.utf8 ) { let lines = dico.split(separator: "\r\n") for line in lines { let lineArray = line.split(separator: " ") print("\(lineArray[0])") // word let wordSorted = String(lineArray[0].sorted()) let draw = getDraw(drawLetters: wordSorted) ?? addDraw(drawLetters: wordSorted) // look if draw already exists, otherwise create new one. let wordItem = Word(context: viewContext) // create word entry with to-one-relationship to draw wordItem.spelling = String(lineArray[0]) wordItem.optComp = (Int(String(lineArray[1])) == 1) wordItem.sort = draw do { try viewContext.save() } catch { print("Errort saving ods9: \(error)") } } } print("Ods Chargé") } func addDraw(drawLetters: String) -> Draw { let newDraw = Draw(context: viewContext) newDraw.draw = drawLetters return(newDraw) } func getDraw(drawLetters: String) -> Draw? { let request: NSFetchRequest<Draw> = Draw.fetchRequest() request.entity = Draw.entity() request.predicate = NSPredicate(format: "draw == %@", drawLetters) do { let drw = try viewContext.fetch(request) return drw.isEmpty ? nil : drw[0] } catch { print("Erreur recherche Tirage") return nil } } createLinks() function (NOK): func createLinks() { var erreur = " fetch request <Draw>" let request: NSFetchRequest<Draw> = Draw.fetchRequest() request.entity = Draw.entity() request.predicate = NSPredicate(value: true) print("Building relationships...") do { let draws = try viewContext.fetch(request) count = draws.count for draw in draws { print("\(count) - \(draw.draw!)") linkTable.removeAll() for letter in ALPHABET { print(letter) let drawLettersPlus = String((draw.draw! + String(letter)).sorted()) // draw with one more letter if let drawPlus = draws.first(where: { $0.draw == drawLettersPlus }) { // look for Draw entity that matches augmented draw let linkItem = Link(context: viewContext) // if found, create new link based on letter with relationship to augmented draw linkItem.letter = String(letter) linkItem.gives = drawPlus erreur = " saving \(draw.draw!) + \(letter)" try viewContext.save() linkTable.append(linkItem) // saves link to populate the one-to-many relationship of the initial draw, once the alphabet is through } } let drawUpdate = draw as NSManagedObject // populate the one-to-many relationship of the initial draw let linkSet = Set(linkTable) as NSSet drawUpdate.setValue(linkSet, forKey: "plus") erreur = " saving \(draw.draw!) links plus" try viewContext.save() count -= 1 // next draw } } catch { print("Error " + erreur) } print("Graph completed") } updateLinks function (NOK): func updateLinks() { var erreur = "fetch request <Link>" let request: NSFetchRequest<Link> = Link.fetchRequest() request.entity = Link.entity() print("Running patch...") do { request.predicate = NSPredicate(format: "gives == nil") let links = try viewContext.fetch(request) for link in links { let baseDraw = link.back!.draw! print("\(baseDraw) \(link.letter!)") let augmDrawLetters = String((baseDraw + link.letter!).sorted()) if let augmDraw = getDraw(drawLetters: augmDrawLetters) { viewContext.perform { let updateLink = link as NSManagedObject updateLink.setValue(augmDraw, forKey: "gives") erreur = " saving \(augmDraw.draw!) \(link.letter!)" do { try viewContext.save() } catch { print("Erreur mise à jour lien") } } } } } catch { print("Error " + erreur) } } RESULT And this is the output showing the content of the Draw entity with relationships after createLinks() is applied: And here after updateLinks() is applied :
2
0
991
Feb ’25
Make default Standby clock
Is there any way to lock the clock in Standby so it doesn't change? It is so frustrating when I put the phone on the charger and have to scroll back and forth, trying to find the clock I would like to use all the time.
Topic: Design SubTopic: General
1
0
587
Feb ’25
MusicKit design guidelines
Hi community, I have a question regarding MusicKit, is it necessary to follow a design guideline to integrate this framework into my App? Also, when no music is reproducing in MusicKit which placeholder we should show, do you provide the resource? Or can we create our own placeholder? Thanks for all, David.
1
0
669
Feb ’25
Apple Intelligence and Siri
I downloaded iOS 26 beta 3. I was very happy with how it turned out, but when I activated Siri, I noticed the rainbow pulsing glow that bordered the phone was missing, and all that was left was the original Siri bubble. I was very disappointed, does anyone know how to get this back? I loved that design feature.
1
0
348
Jul ’25
Getting original LocationNode from hit tested SCNNode
I would like to modify the content of a published LocationNode upon been clicked by the user. But unfortunately: func hitTest(_ point: CGPoint, options: [SCNHitTestOption : Any]? = nil) -> [SCNHitTestResult] returns an SCNNode array from which it is impossible to retrieve the original LocationNode being inserted in order to be able to modify it. Of course the solution would be to either insert the SCNNode corresponding to the inserted LocationNode in a custom class or conversely insert the identifier of the custom object as a tag of the LocationNode, in order to solve the issue. But both options seem impossible to implement. May anyone help me?
1
0
110
Apr ’25
Requirements for application functions that use some WeatherKit data
Hi there I have developed an offline algorithm for calculating tides, which works based on the built-in database of tidal stations in some regions. The algorithm works correctly and the results match the real data. I would like to receive and add moon data from Weather Kit to the algorithm for performance improvement experiments. What requirements do I need to apply to the application so that I can use data from Weather Kit in my algorithm ?
Topic: Design SubTopic: General
1
0
75
Jun ’25
IS THE SWiPE LEFT CAMERA MODE REALLY IMPORTANT?
I have really examined the swipe left Camera function mode and sincerely believe it is no more important especially when there no option in the settings to turn it on or off. I will highly recommend a total scrap in the iOS 26 or if possible a function to activate and deactivate it.
Topic: Design SubTopic: General
3
0
339
Aug ’25
macOS 26 Beta Dark Mode Icons Fallback Removed
Post: In macOS 26 Betas 1–3, the system applied an automatic dark-mode fallback for app icons. This ensured consistency across the Dock and Finder even when developers hadn’t provided dark assets. Since Beta 4, this fallback was removed. As of Beta 7, icons now rely entirely on developer-updated assets. The result is mixed light and dark icons in the Dock, breaking visual consistency and making app recognition slower in dark mode. Observed behavior: • Icons without dark assets are displayed in their original light version. • Some apps (e.g. Final Cut Pro) show a gray border treatment that feels inconsistent with the rest of the UI. • The fallback applied in Betas 1–3 is completely absent. Expected behavior: System should provide a fallback rendering until developers supply proper dark assets, or offer a toggle in System Settings → Appearance (e.g. “Force Dark Icons”). This is still present in Beta 7. Is there any plan to restore the fallback mechanism or provide a user option?
Topic: Design SubTopic: General
0
0
285
Aug ’25
Ios26 dev beta 7 brightness
Hi, is it me or latest beta has pronlem with brightness? i have iPhone 16 pro, and now i must keep disabled auto brightness , at keep slider more or less at maximum, in order to clearly see the screen. fabrizio
Topic: Design SubTopic: General Tags:
0
0
168
Aug ’25
Feedback on the new Camera app icon in iOS 26
I’m currently using the iOS 26 Developer Beta and noticed the new icon design for the Camera app. Personally, I preferred the previous icon it looked cleaner, more elegant, and felt more in line with Apple’s signature iOS design language. The new icon feels more like something you’d expect from Android. It lacks the minimalist, refined style that usually defines iOS icons. I understand UI evolves over time, but this change feels like a step away from what makes Apple’s design philosophy unique. Just wanted to share this honest feedback as a long-time user and developer. Thanks for considering!
Topic: Design SubTopic: General Tags:
2
0
189
Jun ’25
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.2k
Sep ’25
unable to optimize App for iPad
I use swiftui to build apps on iPhone and iPad. There is no problem with the iPhone app. The game display is fully shown on iPhone. However, for the iPad, the game display is not shown and the screen goes black. I had to tap the button on the upper left side.(looks like a side view button) After that, the game display is only shown in the left side in a very small size. How can I make the game display fully shown in the iPad?
2
0
141
Apr ’25
Navigation item title compact size with large text iOS26
Hi there. Our designer is designing our app in Figma with the navigation element with compact size navigation bar, and large title. I couldn't find an API to actually configure the nav bar to be compact while keeping the large title enabled. Figma uses the libraries provided by Apple so it's weird I can't find such configuration in iOS26. I'm adding a screenshot of the options in Figma. First option is: Large size & large text. The one our designer is using is compact size & large text.
Topic: Design SubTopic: General Tags:
2
0
1.8k
Sep ’25
NFC innovation
Existing smartphones store multiple NFC card information. When the NFC antenna of the phone is close to the card reader, it is usually necessary to open the APP to select NFC card information or default to one card information to be transmitted to the card reader. It is not possible to quickly select or switch cards among multiple cards. For example, after using the NFC function to swipe the subway card, the phone needs to open the car access control and community access control again. It is necessary to open the mobile NFC card information management APP to select the community access control card and then swipe the mobile NFC access control, which causes inconvenience. (现有的智能手机存储多个 NFC 卡信息。当手机的NFC天线靠近读卡器时,通常需要打开APP选择NFC卡信息或默认一个卡信息传输到读卡器。无法在多张卡之间快速选择或切换卡。例如,使用NFC功能刷完地铁卡后,手机需要重新打开车内门禁和小区门禁。需要打开手机NFC卡信息管理APP选择社区门禁卡,然后刷手机NFC门禁,造成不便。) Divide the smartphone screen into multiple areas, and users can freely define corresponding NFC information for each area. When the screen is turned off and not unlocked, select NFC card information by pressing different screen areas with your fingers. When the mobile NFC is close to the card reader, the selected card information will be transmitted to the reader(将智能手机屏幕划分多个区域,每个区域手机用户可以自由定义对应NFC信息。在熄屏’不解锁的情况下,通过手指按压不同屏幕区域选择NFC卡片信息,手机NFC贴近读卡器时将选择的卡片信息传递给读卡器。) Below, the method will be further explained in conjunction with the accompanying drawings and embodiments. Figure 1 is a schematic diagram of a utility model; Figure 2 is the flowchart of the present utility model; NFC reader, 2. Mobile screen partition, 3. NFC signal in Figure 1. In Figure 2, 1. Press the area of the screen partition with your finger. 2. Place the phone close to the NFC reader. 3. The phone senses the returned NFC signal. 4. The phone detects the pressed area.( 下面结合附图和实施例对方法进一步说明。 图1为实用新型示意图; 图2为本实用新型流程图; 图1中1.NFC读取器,2.手机屏幕分区,3.NFC信号。 图2中1.手指按压屏幕分区的区域2.手机贴近NFC读取器3.手机感应到返回的NFC信号4.手机检测到按压的区域,5.是否检测到手机用户按压区域的动作,6.检测到按压区域,根据按压区域做出匹配相对应的NFC的动作7.选择用户所需的NFC卡8.NFC卡收到信息并发出卡片信息9.NFC读卡器收到NFC卡的信息。) For example, a smartphone user has N NFC virtual cards in their phone. Users can divide the smartphone screen into N areas, distinguished as A area, B area, C area..., each area controls different NFC. When a smartphone user holds down the B area that controls NFC (such as virtual access cards) and brings the phone close to the NFC card reader (such as access control). The mobile phone will sense NFC signals (access control signals), triggering the phone to detect the area that the user is pressing. There are two possibilities. Firstly, if the user's pressing action is not detected, the NFC card corresponding to the default A zone (set as the default here) will be selected. If the user's pressing action is detected and it is detected that the pressing is in Zone B (the partition corresponding to the access card), then the NFC information corresponding to Zone B is triggered. The smartphone receives this message, and the corresponding NFC sends out a card message. The NFC card reader (access control device) receives the message and reacts (door opens).(例如,一智能手机用户手机中有N个NFC虚拟卡。用户可以将智能手机屏幕分为N个区域,分辨为A区、B区、C区······,每个区域分别控制不同的NFC。当智能手机用户按住控制NFC(如虚拟门禁卡)的B区域并将手机靠近NFC读卡器(如门禁)。手机将会感应到NFC信号(门禁信号),触发手机检测用户正在按压的区域。有两种可能性,第一没有检测到用户的按压动作则选择默认的A区(这里把A区设为默认)所对应的NFC卡。第二检测到用户的按压动作并检测出按压的是B区域(门禁卡所对应的分区),则触发B区域所对应的NFC信息。智能手机收到此信息,相对应的NFC发出卡片信息,NFC读卡器(门禁设备)收到信息,做出反应(门打开)。) 图1 image1 图2 image2
Topic: Design SubTopic: General
1
0
402
Sep ’25
New emoji size is too big!
Hello Apple… used to love my phone and your company… not so much with this God awful new emoji update… Just why? They are giant, we can see them from Alaska, the whole Keyboard is not user friendly at all. It takes me (and reading the feedback from other people - Im not the only one with this problem) ages to find the one I want to use, even with the group icons on the bottom… no, they don’t help. I always ether miss type or just don’t use at all. It takes extra time to use emoji now so I completely stopped using it which sucks. It’s 2025 where time is precious and no one wants to spend extra seconds looking for emojis on this awful new layout you created. Apple developers used to be good about listing to users feedback, I hope you do it in this case, because this is just absolutely terrible and no, you can’t get used to it. I never write reviews anywhere and thought it would take a bit to get used to it… no no and no. This update is awful, please bring it back to normal size so we don’t waste our time and nerves. Thanks.
Topic: Design SubTopic: General
2
0
2.2k
Mar ’25