Yesterday on Explore the biggest updates from WWDC Curt Clifton shared .background(.tint, in: .rect(corner: .containerConcentric)). XCode26 beta 3 don‘t recognize it. how when we can use it??
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.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hi everyone,
I am working on a CarPlay integration, and need open a two level list opened from a root template. However, I am always receiving an error message when opening the 2nd pushed template.
To narrow it down not to have an issue with some app specific code I created the CarPlay scene below.
I am aware that there is a limit, but two levels I understand are supported on all CarPlay integrations, the maximum seems to be 5.
The app is just crashing right after showing the 2nd template.
Any ideas? Any hints are much appreciated.
Thanks a lot!
Regards, Michael
class CarPlaySceneDelegate2: UIResponder, CPTemplateApplicationSceneDelegate {
// [...]
private func createRootTemplate() -> CPListTemplate {
let pushToAItem = CPListItem(text: "Push to Template A", detailText: "Level 1 → Level 2")
pushToAItem.handler = {[weak self] (pushToAItem, completion) in
guard let self = self else {
completion()
return
}
self.interfaceController?.pushTemplate(
self.pushTemplateA(),
animated: true,
completion: { (didPresent, error) in
completion()
}
)
}
let section = CPListSection(items: [pushToAItem])
let template = CPListTemplate(title: "Root Template", sections: [section])
return template
}
private func pushTemplateA() -> CPListTemplate {
let pushToBItem = CPListItem(text: "Push to Template B", detailText: "Level 2 → Level 3")
pushToBItem.handler = {[weak self] (pushToBItem, completion) in
guard let self = self else {
completion()
return
}
self.interfaceController?.pushTemplate(
self.pushTemplateB(),
animated: true,
completion: { (didPresent, error) in
completion()
}
)
}
let backToRootItem = CPListItem(text: "Pop to Root", detailText: "Go back to root")
backToRootItem.handler = { [weak self] _, completion in
self?.interfaceController?.popToRootTemplate(animated: true, completion: nil)
completion();
}
let infoItem = CPListItem(text: "Current Depth", detailText: "2 (Template A)")
let stackCountItem = CPListItem(
text: "Stack Count",
detailText: "\((interfaceController?.templates.count ?? 0) + 1)"
)
let section = CPListSection(items: [pushToBItem, backToRootItem, infoItem, stackCountItem])
let template = CPListTemplate(title: "Template A", sections: [section])
return template
}
private func pushTemplateB() -> CPListTemplate {
let pushToCItem = CPListItem(text: "Push to Template C", detailText: "Level 3 → Level 4")
pushToCItem.handler = {[weak self] (pushToCItem, completion) in
guard let self = self else {
completion()
return
}
self.interfaceController?.pushTemplate(
self.pushTemplateC(),
animated: true,
completion: { (didPresent, error) in
completion()
}
)
}
let backToRootItem = CPListItem(text: "Pop to Root", detailText: "Go back to root")
backToRootItem.handler = { [weak self] _, completion in
self?.interfaceController?.popToRootTemplate(animated: true, completion: nil)
completion()
}
let popOneItem = CPListItem(text: "Pop One", detailText: "Go back to Template A")
popOneItem.handler = { [weak self] _, completion in
self?.interfaceController?.popTemplate(animated: true, completion: nil)
completion()
}
let infoItem = CPListItem(text: "Current Depth", detailText: "3 (Template B)")
let stackCountItem = CPListItem(
text: "Stack Count",
detailText: "\((interfaceController?.templates.count ?? 0) + 1)"
)
let section = CPListSection(items: [pushToCItem, popOneItem, backToRootItem, infoItem, stackCountItem])
let template = CPListTemplate(title: "Template B", sections: [section])
return template
}
private func pushTemplateC() -> CPListTemplate {
let backToRootItem = CPListItem(text: "Pop to Root", detailText: "Go back to root")
backToRootItem.handler = { [weak self] _, completion in
self?.interfaceController?.popToRootTemplate(animated: true, completion: nil)
completion()
}
let popOneItem = CPListItem(text: "Pop One", detailText: "Go back to Template B")
popOneItem.handler = { [weak self] _, completion in
self?.interfaceController?.popTemplate(animated: true, completion: nil)
completion()
}
let infoItem = CPListItem(text: "Current Depth", detailText: "4 (Template C)")
let stackCountItem = CPListItem(
text: "Stack Count",
detailText: "\((interfaceController?.templates.count ?? 0) + 1)"
)
let section = CPListSection(items: [popOneItem, backToRootItem, infoItem, stackCountItem])
let template = CPListTemplate(title: "Template C", sections: [section])
return template
}
}
I've designed a new UI for phones.. I'd like Apple to look at it and see what they think
https://docs.google.com/presentation/d/10QSQvAdRRkL-eA9WRsSEbsL62XIayJ75Mbi93tx92DI/edit?usp=drive_link
Hello everyone,
I’ve reached out to Apple’s review team multiple times, but unfortunately, I haven’t received any clear or specific guidance on why my app was rejected. My app has been rejected several times with the reason “Spam” under guideline 4.3, and I still don't understand exactly which part of the app is problematic.
Even after providing the necessary information about the data, I resubmitted the app, and after a few days, it quickly moved into "In Review" status, but then was rejected within seconds with the same “Spam” message.
I have sent over 13 messages asking for specific feedback, and all I get are vague responses saying “It’s spam, refer to 4.3, fix your app, and resubmit.” However, when I review the guidelines, I don’t see any specific reasons for rejection that apply to my app.
I’m particularly confused because my app is a VPN, and when I check the guidelines, I see that apps in categories like dating and others are saturated, but VPN apps are not. My app uses completely dedicated servers, and the IP addresses are not found in any other apps.
Still, my app keeps getting rejected. If anyone has encountered a similar issue or has any insight into what might be causing this, I would greatly appreciate it if you could provide detailed guidance on what specifically needs to be changed to get the app approved.
Thank you!
Hi everyone. Can you help me with my settings icon design. I`m trying to create circular setting button using Menu. My code here:
struct MenuView: View {
var body: some View {
Menu {
Text("Hello")
Text("How are you")
} label: {
Image(systemName: "gearshape.fill")
.clipShape(Circle())
}
.clipShape(Circle())
.padding(.top, 10)
.padding(.leading, 20)
}
}
You can see my try, this one looks wrong.
It should be like this:
Just Circle with setting image inside. Thank you an advance 😭🙏🛐
Hi Everyone. Can you help me with my settings icon design. I'm trying to create a circular settings button using Menu. My code here:
struct MenuView: View {
var body: some View {
Menu {
Text("Hello")
Text("How are you")
} label: {
Image(systemName: "gearshape.fill")
.clipShape(Circle())
}
.clipShape(Circle())
.padding(.top, 10)
.padding(.leading, 20)
}
}
You can see my try, this one looks wrong.
It should be like this:
Just Circle with setting image inside. Thank you an advance 😭🙏🛐
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.
I'm trying out Icon Composer Version 1.0 (27.4). I imported a simple logo and sized it in the outer circle. The icon appears good in the Icon Composer. But when I export the file and use it for my app icon it seems to be missing a margin or padding that other native application icons have.
Am i supposed to be adding my own padding to these resulting icons or am I building them incorrectly? Any guidance would be appreciated. Thanks!
https://developer.apple.com/documentation/appstoreconnectapi/devicecreaterequest/data-data.dictionary/attributes-data.dictionary
According to the API documentation above, the parameter values for platform can be three: IOS, MAC-OS, and UNIVERSAL. After debugging, it was found that IOS and MAC-OS can be used normally, but UNIVERSAL encountered an error UNIVERSAL' is not a valid value for the attribute 'platform'. Expected one of: 'IOS', 'MAC_OS', I would like to know if this value has been deprecated or if the API interface requires new version support, and how to use this value! Please help me solve it! thank you!
With the code below, JSON data is parsed and is stored in the variable data in the .onAppear function, however an empty set of data is passed to the Content view. How can that be fixed so that the JSON data passes to the DataView?
struct ContentView: View {
@State var data: [Data]
@State var index: Int = 0
var body: some View {
VStack {
DataView(data: data[index])
}
.onAppear {
let filePath = Bundle.main.path(forResource: "data", ofType: "json")
let url = URL(fileURLWithPath: filePath!)
data = getData(url: url)
}
}
func getData(url: URL) -> [Data] {
do {
let data = try Data(contentsOf: url)
let jsonDecoded = try JSONDecoder().decode([Data].self, from: data)
return jsonDecoded
} catch let error as NSError {
print("Fail: \(error.localizedDescription)")
} catch {
print("Fail: \(error)")
}
return []
}
}
As of right now Icon Composer does not support creating app icons for visionOS and tvOS. It appears that only system apps can provide glass icons for those platforms. How should developers handle this? In extreme cases, the flat icon on those platforms will look wildly different from their glass counterparts.
From what I have seen visionOS and tvOS also do not apply any automatic treatment like on iOS where legacy icons get a glass effect.
So, third party app icons are just going to look out of place for (hopefully just) a year on those platforms? What is the recommended approach here? You could obviously fake the effect, but I feel like that would be worse.
This has been an issue since installing the first beta and I haven't seen anyone else say anything about it so I feel like I'm going kind of bonkers. While using Dark Mode, double-tapping to select a word while using the Liquid Glass keyboard, like in Messages or Safari, produces a flashlight-like effect over the text with each tap. While this is a fine animation and pretty helpful when moving the cursor, the brightness of the flashlight effect on white text in Dark Mode makes it impossible to see what you're actually tapping to select. The brightness seems to intensify 100x when rapidly tapping. This is not an issue in Light Mode when the text itself is black.
To recreate this, just turn your phone to Dark Mode, go into Messages and type a few words into a thread. Try to double-tap to select a word in the text box. The brightness of the selected word should intensify to the point of being unable to see the word itself.
Has anyone been bothered by this? Is there a way to fix or adjust it? I've tried reducing transparency and a bunch of other settings but nothing has worked.
I’m delighted with the introduction of new color folders. Although, I can’t help but wonder why we still need both color folders and tags. Aren’t the color folders sufficient for our needs?
Hello Apple Team,
I’d like to request a feature that allows users to close all background apps at once on iPhones. Currently, closing each app individually can be time-consuming, especially when many are running.
A “Close All” button would greatly improve user experience and efficiency.
Thank you for considering this suggestion!
Hi Guys, I noticed that with Icon Composer when you export the icon it does not export a square image, is there any way of doing it or that's how it is now?
Checking the icon on the iPhone something doesn't seem right...
On earlier iOS versions Live Activity displays correctly according to mode set.
Can't find an opened issue for that
version: iOS 26
device: iPhone 16
I'm using the new badge feature for UIBarButtonItem, but it's not working properly for me when transitioning between view controllers.
I have two view controller with various right bar button items. In the first view controller the first button (the one with the bell) has a badge with a numeric count. The second view controller has the same button but in the third position. When I push the second view controller, it seems that the badge maintains also the old position, so I see two buttons with badges instead of one. What can I do to fix this?
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.
Dear Apple Developer Relations Team,
We are currently reviewing the documentation for the UIDesignRequiresCompatibility Info.plist key.
In the documentation, there is a warning that states:
"Temporarily use this key while reviewing and refining your app’s UI for the design in the latest SDKs."
However, in the adoption guide for Liquid Glass:
Adopting Liquid Glass, we did not see any explicit requirement to force adoption of the Liquid Glass design.
We have the Gojek app, which currently uses the UIDesignRequiresCompatibility key. To ensure long-term stability, we would like clarification on the following points:
Future Support of the Key:
Is it safe to continue using the UIDesignRequiresCompatibility key? Can you confirm whether this key will remain supported or if there are plans for it to be deprecated/removed in future iOS versions?
Liquid Glass Adoption:
Our app’s design guidelines do not align with the Liquid Glass style. Can you confirm that adoption of Liquid Glass is not mandatory, and that apps can continue to use their existing custom design guidelines without any restrictions?
Compatibility with iOS 26:
Are there any required changes we need to make to our existing views to ensure that the UI will continue to render as it does today on iOS 26 and beyond?
We want to make sure we provide the best user experience while remaining compliant with Apple’s guidelines. Your clarification would help us plan our design and development roadmap accordingly.
Thank you for your support and guidance.
With the new ios 26 beta 3 helps some stabillty and performance issues but most of the liquid glass has been removed or made very frosty look; and it defeats the whole purpose of a big redesign, and even thought the changes are because of readability and contrast complaints it should not take away liquid glass design. I think apple should consider adding a toggle or choice to choose if they would want a more frosted look or a more liquid glass look the the original plan.