How can I achieve the result of buttons glass effect like sample videos that was show at de WWDC25? I tried a lot of approaches and I still far a way from the video.
I would like something like the pictures attached. Could send a sample code the get the same result?
Thanks
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
Hello Apple Engineering Team and Fellow Developers,
I’ve been using iOS 26 beta from day one and closely following all its improvements. One feature that significantly enhances the user experience is the automatic hiding of the Home Bar (the bottom navigation indicator) after a few seconds of inactivity in menus and apps.
This subtle but powerful UI behavior not only increases immersion but also reduces distractions, making navigation smoother and visually cleaner.
I strongly urge the Apple team to integrate this feature into the upcoming iOS 18.6 update. Bringing this polished interaction to iOS 18 users would greatly improve usability and keep the interface modern and elegant.
Thank you for your continuous efforts in refining iOS.
Looking forward to seeing this improvement officially adopted soon!
Best regards,
[ERFANEX]
I've been beating my head against the wall over a scrollview issue where the top and bottom are cut off in landscape mode. Portrait mode - everything runs swimmingly. The moment I flip the iPad on its side, though, I lose about a quarter of the view on the top and bottom. I thought this was something to do with framing or such; I ran through a myriad of frame, padding, spacer, geometry...I set it static, I set it to dynamically grow, I even created algorithms to try to figure out how to set things to the individual device.
Eventually, I separated the tablet and phone views as was suggested here and on the Apple dev forums. That's when I started playing around with the background image. Right now I have....
ZStack {
Image("background")
.resizable()
.scaledToFill()
.ignoresSafeArea()
ScrollView {
VStack(spacing: 24) {....
The problem is the "scaledToFill". In essence, whenever THAT is in the code, the vertical scrollview goes wonky in landscape mode. It, in essence, thinks that it has much more room at the top and the bottom because the background image has been extended at top and bottom to fill the wider screen of the iPad in landscape orientation.
Is there any way to get around this issue? The desired behavior is pretty straightforward - the background image fills the entire background, no white bars or such, and the view scrolls against it.
I'm looking for a way to display a notification badge without showing a number—essentially, just an empty badge to indicate the presence of notifications. From my research, it seems like this functionality isn't available . Is there any workaround or method to achieve this?
I have many Apple devices, such as macbook, iPad and iPhone. It's very convenient for me to transfer files between devices. However, when I want to send files to my own device in public places, I often click on the wrong recipient because the list avatar keeps changing. I hope the list of recipients can be grouped One group is my own device (or the one I often send to), and the other group is other devices. When the user is about to send, the mouse will be in a relatively fixed and mentally expected area. I feel that this can reduce the probability of sending wrongly
Hello,
I noticed a small mistake in the Human Interface Guidelines (HIG).
On the page HIG > Components > System Experiences > Widget > watchOS Widget Dimensions, scroll down to the bottom. In the "watchOS widget dimensions" section, the sizes in the table are in pixels (px), not points (pt) actually. However, the table header indicates the sizes should be in points (pt).
Page link:
https://developer.apple.com/design/human-interface-guidelines/widgets#watchOS-widget-dimensions
For example, the widget size in the Smart Stack on a 49mm watch should be 192x81.5 pt (or 382x163 px), not 382x163 pt. This size can be verified with the information provided here:
https://developer.apple.com/documentation/watchos-apps/supporting-multiple-watch-sizes/.
https://developer.apple.com/documentation/watchkit/wkinterfacedevice/1620974-screenscale
My newly released App Snapshot-Chess-Move, #1592848671, is not creating a public database of chess moves as I expect. What steps do I need to do inorder for my App to be using a public database. It appears as if each of my iOS devices, iPhone, iPad and Mac mini each have a private database of chess moves. When I change my data on the iPad, I expect the new data to appear (with slight delays) on the Mac.. I do not know what to do next. Please help me. This was working in Development mode but not in Production when I submitted my App for release.
UPDATE:
The cloud data is copied locally to a @Quary variable and updated by using .insert, .delete and .save commands. So, I deleted and re-downloaded my apps on each device, iPad, iPhone, and Mac and obtained the same cloud data. So how do users get the most recent copy of the cloud. Do they need to delete their App and start over? Is there a .update command that can do this updating for me? Also, I pushed the App out of the background and restarted the App to obtain the updated cloud data.
Hello!
I'm currently working on Liquid Glass support for my app. I understand that starting with iOS 26, standard buttons like "Close" or "Done" have shifted from text buttons to using SF Symbols, as mentioned in the Human Interface Guidelines under "Icons".
However, on iOS 18 and earlier, the flat text button style remains the standard. I am unsure about the best approach for backward compatibility:
Branch by OS version: Keep text buttons for older OS versions and use SF Symbols for iOS 26+.
Concern: This increases the number of conditional branches, potentially reducing code readability and maintainability.
Adopt SF Symbols universally: Use SF Symbols for all versions.
Concern: I feel that SF Symbols do not fit well (look inconsistent or out of place) with the flat design language of iOS 18 and earlier.
What would be the recommended approach in this situation?
I previously written here, and some advices were to appeal to rejection sending them message describing uniqueness of the app. Nothing is working.
In short, i have a vpn app (of course by design shares some concept with other apps that are in the app store). But since the rejection i have completely changed the ui, added built in browser, p2p messenger so users could interact with each other without any interference. The app is completely free with no ads. I thought this is it, there's no way it would reject this time, but... i get a notification with rejection repeating the same old message. I'm extremely frustrated and don't know what to do.
Tried changing the logo of the app, the name to "Incognito - Messenger, VPN", app store screenshots.
I've already appealed with screenshots describing unique features that other vpn apps don't have, but the message just repeats from app review team.
Submission ID: 1a49ee0b-c4e2-4a36-8372-e4d3b9a8b13f
Does anybody have an advice what i can do?
So…I am hitting a wall here and could use some guidance towards best practice.
I’ve developed an app in Xcode/SwiftUI that renders just fine on the iPhone - text, images, buttons, frames…everything is nicely centered on the screen or scrolls where and when I want.
The iPad though…not so much. I’m having issues with tops and bottoms being cut off in scrollviews. These are just straight up text screens too - the ones with other elements/controls…they’re rendering fine.
I’ve tried a mix of geometry, vstack, scrollview, padding, spacers…the lot of it. Nothing I seem to do works - the views do not want to fill and fit properly.
And, of course, the issue becomes worse the moment you flip the iPad into landscape view. Or use the 13” models.
I’d imagine others are battling these issues as well and found solutions, so I decided to hit up the brain trust.
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.
Hi,
I am trying to create a custom SF Symbol from an SVG file created with Affinity Designer but, even though my SVG file look perfect in Firefox for example compared to the exported custom.circle.svg file (as recommended in Apple's documentation), I fail to get rid of this error:
"The provided variants are not interpolatable"
My creation process using Affinity Designer is:
Export as SVG file
Duplicate the custom.circle.svg file exported from the SF Symbols app
In the new file, replace the 3 "path" tags in the "g" sections "id="Black-S", "Regular-S", "Ultralight-S" with the paths from the SVG file exported from Affinity designer
Set the 3 transform matrices to "matrix(1 0 0 1 0 0)" for the 3 variants to be generated at the correct location.
Verify in an SVG viewer that the file looks correct.
Import the file via Drag&Drop into the SF Symbols app.
What is wrong with my file?
Thank you in advance for any help,
Marc
mySymbol.svg.txt
I have an iPad developed using UIKit and storyboards now I have to develop UI for iPhone. Designs for iPhone app are completely new from iPad app also navigation is different. I have question regarding should I make different view controllers for iPhone and iPad and different storyboard
Hello everyone,
I'm 14 and absolutely enthusiastic about Apple — not only the products themselves, but the design nuance, the sense that everything has been well thought-out, and even stuff like Fitness+ and the Tips app. I love how much attention Apple pays to making every aspect of the experience feel deliberate and cohesive.
My dream is to eventually become an Apple employee, specifically in design (maybe even retail for the beginnin). I know that I am young right now, but I would like to start learning as soon as possible. To you all who have experience with design or anything else, what are a few things or habits one my age should focus on learning to strengthen in the right direction? to maybe reach this dream
Any assistance or advice would be greatly appreciated. Thanks!
chase
Hi,
I want to generate some sample datas for demonstrating the functions of my app when the app launched. My codes are as followings:
func generateSampleData() {
let hasLaunchedKey = "HasLaunchedBefore"
let defaults = UserDefaults.standard
if !defaults.bool(forKey: hasLaunchedKey) {
//generate the demo data
}
defaults.set(true, forKey: hasLaunchedKey)
}
And I put the func in a view's onAppear modifier. I found every time I go the view, it generates the demo data again, which results in producing a lot of demo data. But I have set the status of the function running in the userdefault. Why did it happen?
Best Wishes,
While doing production release of app, I was not able to see phase release option like in my previous releases. Due To whihc when I released. the app , it got released to 100% users. I want to know why phase release option was not showing up in my dashboard
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 :
Here is my code and the error code being generated during build.
let myString : String = "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=AAPL&apikey= D5GY7HKODE66G0T9"
var banjo = URL(string: myString)
let task = URLSession.shared.dataTask(with:banjo ) { myDatastring , response , error in}
// task.resume()
I've tested that URL in my browser and it works. But when I try to build I get: Value of optional type 'URL?' must be unwrapped to a value of type 'URL'
Please tell me what I'm doing wrong. I think the URL struct is not returning a URL type of object.
While the activityBackgroundTint modifier is intended to set the background color of a Live Activity, it often fails to dynamically update, leaving the activity with an incorrect background. Replacing it with
ZStack {
Color(.background)
....
}
solves the problem, but this is a workaround. The activityBackgroundTint modifier is still needed, at a minimum, so that the "Allow Live Activity for the app" extension does not have the default color.
Ever since Xcode Version 26.0.1 I cannot for the life of me make my buttons rectangular. They are all capsule (or oval) shaped. My interface was designed for square buttons but no matter what I do the issue stays the same. This is what I have (it's fairly barebones but would have worked before I believe):
@IBOutlet weak var PagesInterface: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
PagesInterface.layer.cornerRadius = 0
PagesInterface.layer.masksToBounds = true
}