Post

Replies

Boosts

Views

Activity

Reply to How to get realtime headphone levels in decibel unit
dB relative to what? If you're interested in the SPL the user experiences, that's going to depend on the headphone sensitivity. Even the delivered power isn't very helpful: https://developer.apple.com/documentation/avfoundation/avcaptureaudiochannel/1387368-averagepowerlevel says "averagePowerLevel The instantaneous average power level in decibels." How a measurement can be both average (implying a series of measurements over time) and instantaneous is baffling to me, while a measurement in decibels without a reference power level is also, let's just say non ideal.
Apr ’24
Reply to Animates wrongly at every switch of direction, animates right in same direction
SwiftUI remembers the "old" view in order to perform a transition to the "new" view. When you reverse direction, the outgoing view is still associated with a transition going in the (now) wrong direction. My fix is to immediately change the direction when you press the button. This causes body() to be re-invoked, but no transition is visible because the view ID of the question has not changed. Subsequently, a Task alters the view ID, which causes a transition from the old question (now associated with a removal transition in the new direction) to the new question. I think this solution smells a little, because it is imperatively driving the UI, and because I have no idea when the Task closures will actually be invoked. No doubt after the Button's action closure, but are they guaranteed to be invoked before any subsequent UI action? I don't know. I changed QuizView to ContentView to get it to compile in my test app. import SwiftUI struct Question { let id: Int let text: String } extension AnyTransition { static var slideRight: AnyTransition { let insertion = AnyTransition.move(edge: .trailing) let removal = AnyTransition.move(edge: .leading) return .asymmetric(insertion: insertion, removal: removal) } static var slideLeft: AnyTransition { let insertion = AnyTransition.move(edge: .leading) let removal = AnyTransition.move(edge: .trailing) return .asymmetric(insertion: insertion, removal: removal) } } struct ContentView: View { let questions = [ Question(id: 1, text: "11111111111"), Question(id: 2, text: "222222222222222222222222"), Question(id: 3, text: "3333333333333333333"), Question(id: 4, text: "444444444444444444444444"), Question(id: 5, text: "55555555555555555555"), Question(id: 6, text: "6666666666666666666666666") ] @State private var currentQuestionIndex = 0 @State private var navigationDirection: NavigationDirection = .forward var body: some View { VStack(spacing: 20) { Text(questions[currentQuestionIndex].text) .id(questions[currentQuestionIndex].id) // Important for transition .transition(navigationDirection == .forward ? .slideRight : .slideLeft) .frame(maxWidth: .infinity, maxHeight: .infinity) HStack { Button("Previous") { moveToPreviousQuestion() } .disabled(currentQuestionIndex == 0) Spacer() Button("Next") { moveToNextQuestion() } .disabled(currentQuestionIndex == questions.count - 1) } } .padding() .animation(.easeInOut(duration: 1.0), value: currentQuestionIndex) } private func moveToNextQuestion() { if currentQuestionIndex < questions.count - 1 { if navigationDirection == .backward { navigationDirection = .forward } Task { currentQuestionIndex += 1 } } } private func moveToPreviousQuestion() { if currentQuestionIndex > 0 { if navigationDirection == .forward { navigationDirection = .backward } Task { currentQuestionIndex -= 1 } } } } enum NavigationDirection { case forward, backward }
Apr ’24
Reply to Can't receive notification from Camera Extension(Swift) to observer application (obj-c++)
I use CMIOObjectAddPropertyListener for this kind of communication (of state changes from the extension to an app). That said, I'm surprised at this line [mObserverClassInstance subscribe:@(notification.c_str())]; because I thought @ could only be used with string literals, so you could write [mObserverClassInstance subscribe:@"VirtualCamUsageChanged"]; I've never seen @ used with a run-time expression.
Mar ’24
Reply to USB HID Specifics for Mac OS?
how exactly do you determine that the joystick "does not work" on macOS? Joysticks are not directly supported by the OS, you need to have code that specifically looks for input from HID joysticks. Do you have such code? There's an old project on GitHub https://github.com/arsdraconis/HID-Explorer which needs a few changes to compile on modern macOS, but you may be able to use this to get more insights into how your device is treated by the OS. Also, see this post on Stack Overflow: https://stackoverflow.com/questions/41715074/simple-hid-osx-application, which refers to the open source parts of IOHIDFamily.
Mar ’24
Reply to MetalC++ is confusing
If you insist, Qt is a cross-platform C++ framework for app development which can target macOS. However, I think you're rowing against the tide here. Current documentation and online articles about macOS development lean towards Swift (ten years old) and SwiftUI (five years old), and Objective C. You can use C++ with ObjC code, just change the file extension from .m to .mm. I don't think it is possible to write any meaningful app without using a library of some sort. What exactly are you trying to avoid?
Mar ’24