Post

Replies

Boosts

Views

Activity

Reply to Alternate Icon in iOS26
If your app needs to support "old" style iOS 18 icons and new glass icons for iOS 26, you can do this as well as support alternate icons. Please see my post (and the next) at https://developer.apple.com/forums/thread/787576?answerId=846523022#846523022
Topic: UI Frameworks SubTopic: SwiftUI
Jun ’25
Reply to Icon Composer icons together with iOS 18 icons
It turns out that this also works for alternate app icons. If your app icons asset has icons named AppIcon, AppIcon2, AppIcon3, for example, then if you add glass icon files named AppIcon.icon, AppIcon2.icon, and AppIcon3.icon, then existing code to set an alternate app icon works under iOS 18 as well as iOS 26. Under iOS 26 you get the glass variants and under iOS 18 (and earlier), you get the non-glass variants.
Jun ’25
Reply to Icon Composer icons together with iOS 18 icons
As it turns out, using Xcode 26 to build my app with iOS 18 and iOS 26 app icons is resulting in the iOS 26 glass icon being used for all iOS versions. The Info.plist that is built into the app by Xcode 26 is making the glass icon the primary icon. All of my existing iOS 18 app icons are being set as available alternate icons. My original iOS 18 (and earlier) app icon is named AppIcon. The new glass .icon file is named AppIconGlass. In Xcode 26 I updated the App Icon field on the General tab from AppIcon to AppIconGlass. I just discovered that renaming the .icon file to AppIcon.icon and putting back the App Icon field to AppIcon now gives me the correct icon on iOS 18 and iOS 26. In other words, if you have an app icon asset and your main app icon is named AppIcon in that asset, then when you add the glass icon from Icon Composer to your project, make sure it is named AppIcon.icon. Then on the General tab, enter AppIcon into the App Icon field. I'm also enabling the "Include all app icon assets" option. Taking these steps will give you the proper icon for a given device with a given version of iOS. The icon from the assets will be used for iOS 18 and earlier. The .icon file will be used for iOS 26. You might need to do a clean build and delete and reinstall the app in the various simulators and devices after making those changes. This will ensure no leftover baggage from the previous setup is still around. My app also runs on macOS via Mac Catalyst. I have verified that when run from Xcode 26 on my Mac with macOS 15, I get the older icon. At this time I can't confirm if running the same app on a macOS 26 device will give the new glass icon but I'm hopeful.
Jun ’25
Reply to Building macOS apps with Xcode 26 on macOS 26 VM
I'm stuck with this issue as well. macOS 26 VM running on a macOS 15 host on an M4 MacBook Pro. Xcode 26 running in the macOS 26 guest doesn't allow my app to run (I need lots of different provisioning entitlements). And building in Xcode 26 in the macOS 15 host, despite using manual provisioning to include the macOS 26 guest UDID, doesn't allow the app to run in the macOS 26 guest. Quinn, you mentioned this is being worked on and it will require an OS update. Can you clarify which OS needs to be updated? Would it be macOS 15 as the host or macOS 26 as the guest? Or both? I know you can't commit to anything specific, but is this issue likely to be fixed long enough before the final release of macOS 26.0 (in September I presume) that we will be able to test against macOS 26 in a VM hosted in macOS 15?
Jun ’25
Reply to Xcode 26 running Mac catalyst app crashes on dynamic loading with failure to find _LocationEssentials framework
Comparing your list to mine, your app is using the following libraries that mine is not using. Maybe this will help you figure out which is the issue: SafariServices.framework WatchConnectivity.framework WidgetKit.framework libswiftMapKit.dylib _LocationEssentials.framework AppIntents.framework Combine.framework CoreTransferable.framework DeveloperToolsSupport.framework Intents.framework libswift_Concurrency.dylib libswiftAccelerate.dylib libswiftAVFoundation.dylib libswiftCoreAudio.dylib libswiftCoreMedia.dylib libswiftCoreMIDI.dylib libswiftIntents.dylib libswiftObservation.dylib My app has quite a few that yours doesn't but those would be irrelevant to your issue. My app is also more Objective-C based so I'm using fewer Swift libraries. libswiftMapKit would be my first guess. I use MapKit.framework but not that Swift-specific MapKit library.
Jun ’25
Reply to macOS UIApplication not in scope
A quick search points me to the ProcessInfo class and its beginActivity(options:reason:) and endActivity(_:) methods. The options you can pass to beginActivity include preventing sleep. See the documentation for ProcessInfo for more details and examples. And yes, UIApplication is specific to iOS.
Topic: UI Frameworks SubTopic: General Tags:
Jun ’25
Reply to hidesBottomBarWhenPushed in iOS 26
Your screenshots are showing a tab bar. hidesBottomBarWhenPushed is for hiding a toolbar. From the documentation for hidesBottomBarWhenPushed: A view controller added as a child of a navigation controller can display an optional toolbar at the bottom of the screen. The value of this property on the topmost view controller determines whether the toolbar is visible. If the value of this property is true, the toolbar is hidden. If the value of this property is false, the bar is visible.
Topic: UI Frameworks SubTopic: UIKit
Jun ’25
Reply to Unable to find Slider/UISlider neutralValue
Lots of bugs with UISlider.TrackConfiguration. neutralValue only works if the slider's min value is 0.0 and the max value is 1.0 and the slider's value is between 0 and 1. And of course neutralValue is also in the range 0...1. allowsTickValuesOnly is not honored if ticks are set. Even when set to false it acts as if it is true. enabledRange only respects the upper range, not the lower range. Time to file a bug report. P.S. You can work around the neutralValue issue by converting the slider's value of 0...1 with let desiredValue = slider.value * 20 - 10. That will give you a result in the range -10...10.
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Jun ’25