Explore the various UI frameworks available for building app interfaces. Discuss the use cases for different frameworks, share best practices, and get help with specific framework-related questions.

Post

Replies

Boosts

Views

Activity

Appropriate framework?
I'm a hobbiest just starting to develop an app for MacOS only, so Swift, SwiftUI, Cocoa, UIKit are all very new - I do have a background in C/C++ and various assembly languages but GUI based apps are new and feeling like a challenge. So far, I understand SwiftUI to be the latest framework and thus, in time, it's expected to superceed Cocoa and UIKit. The app I intend to develop will be a remote console for a piece of equipment connected via a serial interface. My intention is to recreate the front panel of the equipment as best I can in the app so it retains the same look and 'feel' as the equipment itself. To accomplish this it will be necessary to place buttons, labels and other textual info in fixed locations within a window. If the window is resized I don't want to reflow its content. With my minimal experience of xcode this seems straightforward using cocoa but I'm stuggling to achieve anything comparable with SwiftUI. I'm keen to avoid spending lots of time learing one framework only to find-out it's not appropriate for the type of app I wish to develop. Guidance on framework selection would be much appreciated. Thanks, Andrew
1
0
24
2d
New Sliders
For the past couple of years, Apple has been using custom sliders in Music, Podcasts, and on the Lock Screen for scrubbing music and controlling volume. But those sliders are not available to 3rd party devs. We can recreate them theoretically for scrubbing audio. But not for volume, where in UIKit we are supposed to use MPVolumeView. Anyone from Apple? Are there any plans to make the slider styles used in Apple's audio apps available to the rest of us? FB12261162
0
0
54
2d
Public generated asset symbols
Is there currently an option to make generated asset symbols public? If not, would it be possible to set the generated asset symbol so they are public. It's quite common to have an apps design system implemented in a separate framework. Currently the generate assets symbols is useless for this as they can't be access in the framework consumer. It would be great to add it to this new dropdown in Xcode 16 or along side it. (113704993 in the release notes) So the options would be Internal, Public and Off. This should affect the symbols, the extensions and the framework support. (There's a post on the swift forums about this as well here: https://forums.swift.org/t/generate-images-and-colors-inside-a-swift-package/65674)
0
4
71
2d
Accessing Status Bar Orientation in PiP Mode for VoIP Apps
I am a VoIP app developer currently working on the Picture-in-Picture (PiP) mode. To ensure the video always appears correctly oriented, I need to obtain rotation information when the device rotates. When the app is in the foreground, I can use [UIDevice currentDevice].orientation to retrieve this value and adjust the video accordingly. However, in PiP mode, my app moves to the background, and this API does not function as expected. Similarly, interfaceOrientation of UIWindowScene and [UIApplication sharedApplication].statusBarOrientation do not work in the background. Is there a way to obtain the orientation information of the system status bar when my app enters the background in PiP mode? Thank you in advance.
0
0
68
3d
Disable new tab bar look
Hi, I am trying out the new UITabBar stuff in iOS18, and I don't think it'll be a good fit for my app. Is there a way to revert to the old iPad UITabBar look and placement that we've been using before? I don't want to make such a big change like this just yet, but I would need to make other changes to the app as well and I don't want to use the new UITabBar just yet. Is there a way to achieve this?
7
1
231
5d
NSItemProvider iconProvider has a dynamic type rather than an image type
I'm using a LPMetadataProvider to get metadata for URLs. If I do this if itemProvider.hasItemConformingToTypeIdentifier(UTType.image.identifier) { let item = try? await itemProvider.loadItem(forTypeIdentifier: UTType.image.identifier) // continue with code to convert data to UIImage... } That seems to fail quite often, even on larger sites like Amazon where users will expect to see an icon. I've noticed it's because sometimes the type is dyn.agq80w5pbq7ww88brrfv085u I'm assuming this is because something about the website response or the image data does not let the system determine if it is actually an image. If I just do this let type: String = "dyn.agq80w5pbq7ww88brrfv085u" if itemProvider.hasItemConformingToTypeIdentifier(type) { let item = try? await itemProvider.loadItem(forTypeIdentifier: type) // continue with code to convert data to UIImage... } Then I get the icon, so it is there and it is an image. The problem is, does this dynamic type cover everything? Should I even be doing that? Does anyone know precisely what causes this and are there recommendations on better ways to handle it? I know LPLinkView appears to do something to load these 'non-image' icons so I am assuming there are way. My assumption is that it would be safe to look at the results of itemProvider.registeredTypeIdentifiers() and if it has something use that as the type rather than coming up with a hardcoded list of types to check for.
2
0
111
1w
iOS floating caret position
Hello, On iOS it is possible to use the keyboard spacebar to move the caret while editing text. The user has to longpress on the spacebar, and then the keyboard would turn into a trackpad that moves around a floating caret. Is there a way to get the position of the caret while the user uses this space bar navigation? And by the position I mean the position in an app or in a frame? Are there any other events that this action can send out? Thanks a lot!
1
0
212
1w
Help Needed: Implementing a Countdown Timer Live Activity with Push Notifications
Notifying the Live Activity When Countdown is Complete: Once the countdown timer reaches zero, how do I notify the live activity? What is the best approach to ensure the live activity updates accurately and promptly? Handling App Suspension in the Background: When my app is in the background, it gets suspended. Should I set up a job queue on the backend to send an update push notification when the timer ends? Is there a more efficient way to handle this? Ensuring Timer Accuracy: Since this feature deals with time, I am concerned about the accuracy of the timer. How can I ensure the countdown timer remains accurate even when the app is not in the foreground? Any answers, insights, or guidance on these issues would be greatly appreciated. Thank you in advance for your help!
1
0
195
2w
CarPlay - CPListItem long text going over chevron indicator
I'm using CPListItem to display different items in CarPlay, things like Addresses that the user can navigate to for example. Sometimes these addresses are too long and go over the chevron indicator. I was trying to find a way to truncate the title, or use lineBreakMode similar to labels but couldn't find a way to do so. Any help is appreciated here. See the screenshot below for more details on the problem.
1
0
167
2w
Saving Color from UIColorPickerViewController with UserDefaults
I've been trying to save a selected color with UserDefaults from UIColorPickerViewController. But I run into a color space fiasco. Anyway, here come my lines of code. class ViewController: UIViewController, UIColorPickerViewControllerDelegate { @IBOutlet weak var imageView: UIImageView! @IBAction func selectTapped(_ sender: UIButton) { let picker = UIColorPickerViewController() picker.delegate = self picker.selectedColor = .yellow picker.supportsAlpha = false present(picker, animated: true, completion: nil) } override func viewDidLoad() { super.viewDidLoad() } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) if let color = UserDefaultsUIColor.shared.readColor(key: "MyColor") { print("Color being read: \(color)") } } func colorPickerViewControllerDidFinish(_ viewController: UIColorPickerViewController) { let color = viewController.selectedColor print("Selected color: \(color)") UserDefaultsUIColor.shared.saveColor(color: viewController.selectedColor, key: "MyColor") } func colorPickerViewControllerDidSelectColor(_ viewController: UIColorPickerViewController) { imageView.backgroundColor = viewController.selectedColor } } class UserDefaultsUIColor { static let shared = UserDefaultsUIColor() func saveColor(color: UIColor, key: String) { let userDefaults = UserDefaults.standard do { let data = try NSKeyedArchiver.archivedData(withRootObject: color, requiringSecureCoding: false) as NSData? userDefaults.set(data, forKey: key) } catch { print("Error UserDefaults: \(error.localizedDescription)") } } func readColor(key: String) -> UIColor? { let userDefaults = UserDefaults.standard if let data = userDefaults.data(forKey: key) { do { if let color = try NSKeyedUnarchiver.unarchivedObject(ofClass: UIColor.self, from: data) { return color } } catch { print("Error UserDefaults") } } return nil } } I first start out with a yellow color (UIColor.yellow). And I select a color whose RGB values are 76, 212, 158, respectively. And the color picker guy returns the following. kCGColorSpaceModelRGB 0.298039 0.831373 0.619608 1 And I get the following in reading the saved color data object. UIExtendedSRGBColorSpace -0.270778 0.84506 0.603229 1 How can I save and read color data objects consistently? I could specify a color space when I save a color. But it doesn't go well. Muchos thankos Señor Tomato de Source
0
0
703
Jun ’23