Hi everyone, I'm currently working on my own Apple TV app. So far, things are going pretty well, but right now, I'm stuck on the design of the categories or selection menus.
Here's a screenshot of how it looks right now:
The green color and the border are intentionally added for now so I can see what is where. My actual goal is to remove the gray bar (or is this the "main bar"?). The pink bar and its border are just design elements that can be removed if needed. I want it to look more "original," like this:
Here is the code:
let title: String
let isSelected: Bool
var body: some View {
HStack {
Text(title)
.foregroundColor(isSelected ? .black : .white)
.font(.system(size: 22, weight: .regular))
.padding(.leading, 20)
Spacer()
Image(systemName: "chevron.right")
.foregroundColor(isSelected ? .black : .gray)
.padding(.trailing, 20)
}
.frame(height: 50) // Einheitliche Höhe für die Kategorien
.background(Color.pink) // Innerer Hintergrund auf pink gesetzt
.cornerRadius(10) // Abrundung direkt auf den Hintergrund anwenden
.overlay(
RoundedRectangle(cornerRadius: 10)
.stroke(Color.green, lineWidth: 3) // Äußerer Rahmen auf grün gesetzt
)
.padding(.horizontal, 0) // Entferne äußere Ränder
.background(Color.clear) // Entferne alle anderen Hintergründe
}
}
struct SettingsView_Previews: PreviewProvider {
static var previews: some View {
SettingsView()
}
}
I’ve adjusted the code, but it’s still not quite right. When a category is not selected, it appears black instead of gray, like in the original design
Here is the code:
struct SettingsView: View {
@State private var selectedCategory: String?
var body: some View {
NavigationStack {
ZStack {
Color.black
.edgesIgnoringSafeArea(.all)
VStack(spacing: 0) {
// Überschrift oben in der Mitte
Text("Einstellungen")
.font(.system(size: 40, weight: .semibold))
.foregroundColor(.white)
.padding(.top, 30)
HStack {
// Linke Seite mit Logo
VStack {
Spacer()
Image(systemName: "applelogo")
.resizable()
.scaledToFit()
.frame(width: 120, height: 120)
.foregroundColor(.white)
Spacer()
}
.frame(width: UIScreen.main.bounds.width * 0.4)
// Rechte Seite mit Kategorien
VStack(spacing: 15) {
ForEach(categories, id: \.self) { category in
NavigationLink(
value: category,
label: {
SettingsCategoryView(
title: category,
isSelected: selectedCategory == category
)
}
)
.buttonStyle(PlainButtonStyle())
}
}
.frame(width: UIScreen.main.bounds.width * 0.5)
}
}
}
.navigationDestination(for: String.self) { value in
Text("\(value)-Ansicht")
.font(.title)
.foregroundColor(.white)
.navigationTitle(value)
}
}
}
private var categories: [String] {
["Allgemein", "Benutzer:innen und Accounts", "Video und Audio", "Bildschirmschoner", "AirPlay und HomeKit", "Fernbedienungen und Geräte", "Apps", "Netzwerk", "System", "Entwickler"]
}
}
struct SettingsCategoryView: View {
let title: String
let isSelected: Bool
var body: some View {
HStack {
Text(title)
.foregroundColor(.white)
.font(.system(size: 22, weight: .medium))
.padding(.leading, 20)
Spacer()
Image(systemName: "chevron.right")
.foregroundColor(.gray)
.padding(.trailing, 20)
}
.frame(height: 50) // Einheitliche Höhe für die Kategorien
.background(isSelected ? Color.gray.opacity(0.3) : Color.clear) // Hervorhebung des ausgewählten Elements
.cornerRadius(8) // Abgerundete Ecken
.scaleEffect(isSelected ? 1.05 : 1.0) // Fokus-Animation
.animation(.easeInOut, value: isSelected)
}
}
struct SettingsView_Previews: PreviewProvider {
static var previews: some View {
SettingsView()
}
}
General
RSS for tagExplore the art and science of app design. Discuss user interface (UI) design principles, user experience (UX) best practices, and share design resources and inspiration.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hi everyone,
I’m new to macOS development and working on an app idea that needs a timeline-based editor interface, similar to what you see in Logic Pro or Final Cut.
The UI I want to build would have:
A horizontal beat ruler that follows BPM and shows beat positions
Several vertical tracks stacked below it (for things like events or markers)
Horizontal zooming and scrolling
A preview panel on the right side that stays in sync with the timeline
I’m currently trying this in SwiftUI, but I’m running into some limitations and wondering if AppKit would be a better fit, or maybe a hybrid of the two.
My questions:
Where should I start when building something like this?
What’s the best way to make the beat ruler and all track layers scroll together?
How should I handle zooming in/out and syncing the display to a BPM timeline?
Is there a clean way to integrate AppKit for the timeline view while keeping SwiftUI elsewhere?
In Apple Vision Pro, I want to implement a HUD page similar to the one in Medivis' SuricalAR product (i.e. the UI is fixed on the screen field of view rather than in space). How should I do it?
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.
I recently detected a special crash on 18.0, 18.1, 18.1.1, 18.2,18.3 which cannot be repeated, and the page logs are related to the keyboard, is there any idea to deal with this problem?
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000 at 0x0000000000000000
Crashed Thread: 0
CrashDoctor Diagnosis: Application threw exception NSInternalInconsistencyException: Multi layer delegate table missing.
Thread 0 Crashed:
0 CoreFoundation 0x000000018fa487cc __exceptionPreprocess + [ : 164]
1 libobjc.A.dylib 0x000000018cd1b2e4 objc_exception_throw + [ : 88]
2 Foundation 0x000000018ee188d8 _userInfoForFileAndLine
3 UIKitCore 0x0000000192ee8074 -[UIView _multiLayerDelegatesTableCreateIfNecessary:] + [ : 208]
4 UIKitCore 0x0000000192ee80c4 -[UIView _registerMultiLayerDelegate:] + [ : 36]
5 UIKitCore 0x00000001924f74c0 -[_UIPortalView setSourceView:] + [ : 132]
6 UIKitCore 0x000000019325b6bc -[_UIPortalView initWithSourceView:] + [ : 68]
7 UIKitCore 0x0000000193283ea4 -[_UITextMagnifiedLoupeView initWithSourceView:] + [ : 444]
8 UIKitCore 0x000000019373461c +[UITextLoupeSession _makeLoupeViewForSourceView:selectionWidget:orientation:] + [ : 84]
9 UIKitCore 0x00000001937347bc +[UITextLoupeSession _beginLoupeSessionAtPoint:fromSelectionWidgetView:inView:orientation:] + [ : 304]
10 UIKitCore 0x0000000192dc0ce0 -[UITextRefinementTouchBehavior textLoupeInteraction:gestureChangedWithState:location:translation:velocity:modifierFlags:shouldCancel:] + [ : 1756]
11 UIKit 0x0000000249cc89e0 -[UITextRefinementTouchBehaviorAccessibility textLoupeInteraction:gestureChangedWithState:location:translation:velocity:modifierFlags:shouldCancel:] + [ : 216]
12 UIKitCore 0x00000001935445b4 -[UITextRefinementInteraction loupeGestureWithState:location:translation:velocity:modifierFlags:shouldCancel:] + [ : 124]
13 UIKitCore 0x0000000193543f74 -[UITextRefinementInteraction loupeGesture:] + [ : 548]
14 UIKitCore 0x000000019259eac4 -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] + [ : 128]
15 UIKitCore 0x000000019259e934 _UIGestureRecognizerSendTargetActions + [ : 92]
16 UIKitCore 0x000000019259e6f4 _UIGestureRecognizerSendActions + [ : 284]
17 UIKitCore 0x0000000192251b28 -[UIGestureRecognizer _updateGestureForActiveEvents] + [ : 572]
18 UIKitCore 0x0000000192223724 _UIGestureEnvironmentUpdate + [ : 2488]
19 CoreFoundation 0x000000018f9ea1f4 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + [ : 36]
20 CoreFoundation 0x000000018f9e9f98 __CFRunLoopDoObservers + [ : 552]
21 CoreFoundation 0x000000018fa19028 __CFRunLoopRun + [ : 948]
22 CoreFoundation 0x000000018fa18830 CFRunLoopRunSpecific + [ : 588]
23 GraphicsServices 0x00000001db9f81c4 GSEventRunModal + [ : 164]
24 UIKitCore 0x000000019257eeb0 -[UIApplication _run] + [ : 816]
25 UIKitCore 0x000000019262d5b4 UIApplicationMain + [ : 340]
26 顺丰小哥 0x00000001042c7cc0 main + [main.m : 13]
27 (null) 0x00000001b5406ec8 0x0 + 7335866056
Hi, I'm getting started with designing and coding a watchOS app. I wanted to use Sketch to plan the UI before I dive into coding, but it seems like the official Sketch templates on the Design Resources page only have templates for the Series 8 and SE 2 on watchOS 10. I want to use the Series 10's screen size for my layouts since it's the model I have, but I can't find a template for it. Will the official templates be updated for the new models? If not, does anyone know of a third-party template I can use? Thanks in advance!
Hi everyone,
I’m having trouble getting the new glassEffect() modifier to render correctly in SwiftUI.
No matter what I try, it just appears as a solid white background (instead of translucent glass). This happens both in Beta 1 and Beta 2.
My setup:
• Mac mini (M4 chip)
• macOS 15 Beta 2 (Tahoe)
• Xcode 16 Beta 2
• Samsung Odyssey G9 57” monitor (super ultrawide)
• Using Preview in SwiftUI (not the Simulator)
Even when I use Apple’s default demo code like:
Text("Hello World")
.padding()
.glassEffect()
Why my app icon doesn't have effect liquid glass on ios26. My team dev still not upgrade to xcode26, so I have to export icon for them. And I don't see the effect like stroke of the detail.
Hi Apple developer community. I have a question a lot of users don’t like the new control center and notification center. Are you guys gonna blur the background or are you guys gonna keep it the same?
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!
Hi everyone,
I’m having trouble getting the new glassEffect() modifier to render correctly in SwiftUI.
No matter what I try, it just appears as a solid white background (instead of translucent glass). This happens both in Beta 1 and Beta 2.
My setup: • Mac mini (M4 chip) • macOS 26 Beta 2 (Tahoe) • Xcode 26 Beta 2 • Samsung Odyssey G9 57” monitor (super ultrawide) • Using Preview in SwiftUI, I use IOS 26 Beta 2 (not the Simulator)
Even when I use Apple’s default demo code like:
Text("Hello World") .padding() .glassEffect()
Hi is there possibly to put text data or information into Roomplanapi elements like data wall color etc and export to usdz after lidar scan
When receiving or dialing a call, the green (answer) and red (decline) icons appear blurry, and there is a black screen overlay around the icons. This makes it difficult to interact with the call interface properly.
App design: macos, Xcode 16.4, Sequioa 15.5, it is sandboxed
Uses: Pods->HotKey for a global hotkey which xcode says "binary compatibility can't be guaranteed"
This app is on the Apple Store and supposedly apps on the Apple Store can't use global hotkeys. Someone internally, installed it from the store and the global hotkey works just fine.
I'm concerned for two potential problems;
I need to find a hotkey library or code that is known to work with a sandbox'd Apple Store app.
Why is it working now when everything I have read says it shouldn't.
We are working on one of the projects for Hackathon for which we need to access the 3D Models of Apple Watch, it will help in making our project more realistic and effective, I wanted to know if we can get access for the same.
Hi,
I have the following code, which for some reason is not working as expected. I have an .onAppear and a .task function that isn't running, which I can see isn't running because nothing is printing. Any guidance would be greatly appreciated. Thank you.
struct ContentView: View {
var body: some View {
ZStack {
switch view {
case .view1: View1()
case .view2: View2()
case .view3: View3()
case .view4: View4()
case .view5: View5()
default: SubscriptionStoreView(groupID: "")
}
}
.onAppear() {
view = .view6
print("test 1")
}
.task {
print("test")
await refreshPurchasedProducts()
}
}
func refreshPurchasedProducts() async {
// Iterate through the user's purchased products.
for await verificationResult in Transaction.currentEntitlements {
switch verificationResult {
case .verified(let transaction): print("verified")
case .unverified(let unverifiedTransaction, let verificationError): print("unverified")
default: print("default")
}
}
}
}
I am struggling with exactly how to set up SwiftData relationships, beyond the single relationship model...
Let's say I have a school. Each school offers a set of classes. Each class is taught by one teacher and attended by several students. Teachers may teach more than one class, but only at one school. Similarly students may attend more than one class, but only at one school. Classes themselves may be offered at more than one school.
Can someone create a class for School, SchoolClass, Teacher, and Student with id, name, and relationships... I have tried it unsuccessfully about 10 different ways at this point.
My most recent is below... I am struggling getting beyond a school listing in the app, and I'll cross that bridge next. I am just wondering if all the trouble I am having is because I am not smart with the class definitions. And wondering if this is to complex for SwiftData and CoreData is the requirement.
This is not a real app, just my way of really trying to get a handle on Swift Data models and Navigation.
I am very new to Swift, and will take any and all suggestions with enthusiasm! Thanks for taking the time.
import Foundation
import SwiftData
@Model
class School: Identifiable {
var id: UUID = UUID()
var name: String
var mascot: String
var teachers: [Teacher]
var schoolClasses: [SchoolClass]
init (name: String, mascot: String = "", teachers: [Teacher] = [], schoolClasses: [SchoolClass] = []) {
self.name = name
self.mascot = mascot
self.teachers = teachers
}
class SchoolClass: Identifiable {
var id: UUID = UUID()
var name: String
var teacher: Teacher?
var students: [Student] = []
init (name: String, teacher: Teacher? = nil, students: [Student] = []) {
self.name = name
self.teacher = teacher
self.students = students
}
}
class Teacher: Identifiable {
var id: UUID = UUID()
var name: String
var tenured: Bool
var school: School?
var students: [Student] = []
init (name: String, tenured: Bool = false, students: [Student] = []) {
self.name = name
self.tenured = tenured
self.students = students
}
}
class Student: Identifiable {
var id: UUID = UUID()
var name: String
var grade: Int?
var teacher: Teacher?
init (name: String, grade: Int? = nil, teacher: Teacher? = nil) {
self.name = name
self.grade = grade
self.teacher = teacher
}
}
}
我设计了一个可以键盘输入的蓝牙HID设备,被iphone蓝牙连接后,iphone无法弹出系统键盘,我正试图寻求可以通过修改HID设备代码来解决的方案。
At WWDC25 we launched a new type of Lab event for the developer community - Group Labs. A Group Lab is a panel Q&A designed for a large audience of developers. Group Labs are a unique opportunity for the community to submit questions directly to a panel of Apple engineers and designers. Here are the highlights from the WWDC25 Group Lab for Design.
Can you expand on how Liquid Glass helps with navigation and focus in the UI?
Liquid Glass clarifies the navigation layer by introducing a single, floating pane that acts as the primary navigation area. Buttons within this pane seamlessly morph as you move between sections, and controls can temporarily lift into the glass surface. While avoiding excessive use of glass (like layering glass on glass), this approach simplifies navigation and strengthens the connection between menus, alerts, and the elements that trigger them.
What should I do with customized bars that I might have in my app?
Reconsider the content and behavior of customized bars. Evaluate whether you need all the buttons and whether a menu might be a better solution. Instead of relying on background colors or styling, express hierarchy through layout and grouping. This is a good opportunity to adopt the new design language and simplify your interface.
What are scroll edge effects, and what options do we have for them?
Scroll edge effects enhance legibility in controls by lifting interactive elements and separating them from the background. There are two types: a soft edge effect (a subtle blur) and a hard edge effect (a more defined boundary for high-legibility areas like column sorting). Scroll edge effects are designed to work seamlessly with Liquid Glass, allowing content to feel expansive while ensuring controls and titles remain legible.
How can we ensure or improve accessibility using Liquid Glass?
Legibility is a priority, and refinements are ongoing throughout the betas. Liquid Glass adapts well to accessibility settings like Reduce Transparency, Increase Contrast, and Reduce Motion. There are two variants of glass: regular glass, designed to be legible by default, and clear glass, used in places like AVKit, which requires more care to ensure legibility. Use color contrast tools to ensure contrast ratios are met. The Human Interface Guidelines (HIG) are a living document offering best practices. The colors and materials pages are key resources.
Do you have any recommendations for convincing designers concerned with consistency across Android and Web to use Liquid Glass?
Start small and focus on high-utility controls that don't significantly impact brand experience. Native controls offer familiarity and predictability to users. Using the native controls makes sure your app feels at home on the device. Using native frameworks provides built-in accessibility support (dynamic type, reduce transparency, increase contrast). Native controls come with built-in behaviors and interactions.
Can ScrollViews include Liquid Glass within them?
You can technically put a glass layer inside a scroll view, but it can feel heavy and doesn't align with the system's intention for Liquid Glass to serve as a fixed layer. Think of the content layer as the scrolling layer, and the navigational layer as the one using Liquid Glass. If there is glass on the content layer it will collide into the navigational layer.
What core design philosophy guided the direction of iOS 26, beyond the goal of unification?
The core design philosophy involved blurring the line between hardware and software, separating UI and navigation elements from content, making apps adaptable across window sizes, and combining playfulness with sophistication. It was about making the UI feel at home on rounded screens.
Can we layer Liquid Glass elements on top of each other?
Avoid layering Liquid Glass elements directly on top of each other, as it creates unnecessary visual complexity. The system will automatically convert nested glass elements to a vibrant fill style. Use vibrant fills and labels to show control shapes and ensure legibility. Opaque grays should be avoided in favor of vibrant colors, which will multiply with the backgrounds correctly.
What will happen to apps that use custom components? Should they be adapted to the new design within the next year?
The more native components you use, the more things happen for free. Standard components will be upgraded automatically. Look out for any customizations that might clash. Think about what is the minimum viable change, where your app still feels and looks very similar to what it did. Prioritize changes in core workflows and navigational areas. There are a number of benefits to using native components including user familiarity, built-in accessibility support, and built-in behaviors and interactions.
Will Apple be releasing Figma design templates?
Sketch kits were published on Monday and can be referenced. The goal is to ensure the resources are well-organized, well-named, and easy to use. It's a high priority.
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)