Post

Replies

Boosts

Views

Activity

Reply to Background video recording
Well, I'm not Apple, but I think it is unlikely that you'll ever hear a reason for their design decisions. What you'll usually hear is that if you want a feature, use the Feedback Assistant to request that feature - outline your use case, what you can do, what you can't do, why you would like to be able to do it. Often, decisions like these are made to improve the overall user experience of the phone; it is quite easy to drain the battery rapidly if you leave. video recording on inadvertently. You may contend that the user should be made the final arbiter in this decision (it's my phone, and I'll drain the battery if I want to!), and that is so on other platforms, but this is Apple's design and Apple make the rules.
Topic: App & System Services SubTopic: Core OS Tags:
Dec ’22
Reply to Sendig UDP packets with specified local port
I might be completely wrong here, but it looks like you can do this line differently connection = NWConnection(host: host, port: port, using: .udp) the last parameter doesn't need to be fixed as .udp, the default udp parameters. You can make new NWParameters and alter the value of requiredLocalEndpoint. hth, and Happy New Year
Topic: Programming Languages SubTopic: Swift Tags:
Dec ’22
Reply to How Can WithAnimation Code be placed inside the view to be animated
Your code wouldn't compile as-is, but I think you want your GradientLegendView to slide in from the leading edge, and out on the trailing edge of the ContentView, in response to pressing a button. And you don't want to animate the isShowingLegend variable, you'd rather attach the animation to your GradientLegendView. The thing is, what you want to animate (the position of the GradientLegendView) isn't intrinsic to the GradientLegendView. The view position is a property of the GradientLegendView which only makes sense in the ContentView. I took the .transition modifier out of the GradientLegendView, and removed its isShowingLegend. The GradientLegendView is the thing which shows the gradient legend; it doesn't make sense for it to take that bool parameter. The piece of UI which uses the GradientLegendView decides whether to show it or not. I attached a .transition(.slide) to the HStack which builds your GradientLegendView, and provided a .animation controlled by isShowingLegend. The animation is applied to a Group in your overlay. The Group returns an HStack if isShowingLegend is true and an (implied) EmptyView otherwise. It is necessary because the type of the parameter to .overlay should be some View. this is my ContentView     @State private var isShowingLegend = true     var body: some View {         Button("Press Me") {             isShowingLegend.toggle()         }          .frame(maxWidth: .infinity, maxHeight: .infinity)         .edgesIgnoringSafeArea(.all) //        .task { //          setupMenuItems() // won't compile, don't have //        }         .overlay(             Group {                 if isShowingLegend {                     HStack {                         GradientLegendView(                             // doesn't need isShowingLegend                             labels: SampleData.createHeatmapLegendLabelArray(),                             colors: SampleData.createHeatmapLegendColorArray(),                             width: 120,                             height: 200)                         Spacer()                     }                     .transition(.slide)                 }             }             .animation(.easeInOut, value:isShowingLegend)           ,           alignment: .bottom         )     } } I don't know if this is what you are looking for (or were looking for, because it has been two weeks!), but I hope it helps. This is a pretty good article about transitions https://www.objc.io/blog/2022/04/14/transitions/ And I found this tutorial very useful also https://www.hackingwithswift.com/books/ios-swiftui/creating-implicit-animations
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Dec ’22
Reply to c++ formatting library fmt not working in Xcode 14.1
at the top of your file, change #include "fmt/core.h" to `#define FMT_HEADER_ONLY #include "fmt/format.h"` that worked for me. I found the magic ju-ju on Stackoverflow, if you search for "How to use fmt library in the header-only mode?" you should see the answer I found. If this forum allows direct links, it is here: https://stackoverflow.com/questions/66944554/how-to-use-fmt-library-in-the-header-only-mode
Topic: App & System Services SubTopic: Core OS Tags:
Nov ’22
Reply to Tab View not working.
the code you have posted does not compile - ContentView5 and Tutorial are missing. The PreviewProvider is missing - usually this builds your ContentView, but for some reason you have a ContentView100. It would be easier to read your code if you posted inside a code block (see the little icons at the bottom of the Your Reply pane). Try again and maybe someone can help you out!
Topic: Programming Languages SubTopic: Swift Tags:
Nov ’22
Reply to error build: Command Ld failed with a nonzero exit code
in Xcode, go to View/Navigators/Reports. (the navigator is the panel on the left, which can be closed. The Report navigator can also be chosen by the rightmost button at the top of this panel). Click the build log. On the right, the log will open. You'll see a Link stage near the end of the log. Select that stage, and a little icon will appear at the end of the line you have just highlighted. You can click that to expose the detailed link log.
Oct ’22
Reply to DriverKit code signing/driver loading issues.
In Xcode, select the dext target, then under Signing, you should see a section labelled "DriverKit", with a Provisioning Profile: which you cannot modify, called "Xcode Managed Profile". If you click on the (i) here, does everything seem as you expect? You should see some capabilities, and some entitlements. Do they all have tick marks? Find your app in the Derived Data folder, and drill down to the dext, and look at its .embeddedprofile (QuickLook should open it for you, just use the space bar). Does it look correct? Follow the advice from Quinn here https://developer.apple.com/forums/thread/656490
Topic: App & System Services SubTopic: Drivers Tags:
Oct ’22
Reply to Where is my kext log(kernel log)
first question I have is "do you really need a driver"? If your device provides a service which is only useful to one application, a driver may be inappropriate or unnecessary, particularly if the interface is USB. In addition, kexts are being replaced by dexts, so even if you need a driver, that driver may not need to be in the kernel (or at least, not the parts that you write). I would advise you to use os_log(OS_LOG_DEFAULT, ) to begin with. To view the logs, use the Console app and filter on some unique string in your message (I like to use "XXXX"). This is primitive but there are less things to go wrong. You can also filter on "com.apple.driver.IOKitTest" to find all strings logged from your driver or about your driver. You can also use the command-line interface to the ASL (Apple System Log), log. It has a very long man page which refers to an even longer piece of documentation about how to build the predicates used for --predicate. It is so complicated I rarely use it. See https://developer.apple.com/documentation/os/logging/viewing_log_messages?language=objc
Topic: App & System Services SubTopic: Drivers Tags:
Oct ’22
Reply to Background video recording
Well, I'm not Apple, but I think it is unlikely that you'll ever hear a reason for their design decisions. What you'll usually hear is that if you want a feature, use the Feedback Assistant to request that feature - outline your use case, what you can do, what you can't do, why you would like to be able to do it. Often, decisions like these are made to improve the overall user experience of the phone; it is quite easy to drain the battery rapidly if you leave. video recording on inadvertently. You may contend that the user should be made the final arbiter in this decision (it's my phone, and I'll drain the battery if I want to!), and that is so on other platforms, but this is Apple's design and Apple make the rules.
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Dec ’22
Reply to Sendig UDP packets with specified local port
I might be completely wrong here, but it looks like you can do this line differently connection = NWConnection(host: host, port: port, using: .udp) the last parameter doesn't need to be fixed as .udp, the default udp parameters. You can make new NWParameters and alter the value of requiredLocalEndpoint. hth, and Happy New Year
Topic: Programming Languages SubTopic: Swift Tags:
Replies
Boosts
Views
Activity
Dec ’22
Reply to How Can WithAnimation Code be placed inside the view to be animated
Your code wouldn't compile as-is, but I think you want your GradientLegendView to slide in from the leading edge, and out on the trailing edge of the ContentView, in response to pressing a button. And you don't want to animate the isShowingLegend variable, you'd rather attach the animation to your GradientLegendView. The thing is, what you want to animate (the position of the GradientLegendView) isn't intrinsic to the GradientLegendView. The view position is a property of the GradientLegendView which only makes sense in the ContentView. I took the .transition modifier out of the GradientLegendView, and removed its isShowingLegend. The GradientLegendView is the thing which shows the gradient legend; it doesn't make sense for it to take that bool parameter. The piece of UI which uses the GradientLegendView decides whether to show it or not. I attached a .transition(.slide) to the HStack which builds your GradientLegendView, and provided a .animation controlled by isShowingLegend. The animation is applied to a Group in your overlay. The Group returns an HStack if isShowingLegend is true and an (implied) EmptyView otherwise. It is necessary because the type of the parameter to .overlay should be some View. this is my ContentView     @State private var isShowingLegend = true     var body: some View {         Button("Press Me") {             isShowingLegend.toggle()         }          .frame(maxWidth: .infinity, maxHeight: .infinity)         .edgesIgnoringSafeArea(.all) //        .task { //          setupMenuItems() // won't compile, don't have //        }         .overlay(             Group {                 if isShowingLegend {                     HStack {                         GradientLegendView(                             // doesn't need isShowingLegend                             labels: SampleData.createHeatmapLegendLabelArray(),                             colors: SampleData.createHeatmapLegendColorArray(),                             width: 120,                             height: 200)                         Spacer()                     }                     .transition(.slide)                 }             }             .animation(.easeInOut, value:isShowingLegend)           ,           alignment: .bottom         )     } } I don't know if this is what you are looking for (or were looking for, because it has been two weeks!), but I hope it helps. This is a pretty good article about transitions https://www.objc.io/blog/2022/04/14/transitions/ And I found this tutorial very useful also https://www.hackingwithswift.com/books/ios-swiftui/creating-implicit-animations
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Dec ’22
Reply to c++ formatting library fmt not working in Xcode 14.1
at the top of your file, change #include "fmt/core.h" to `#define FMT_HEADER_ONLY #include "fmt/format.h"` that worked for me. I found the magic ju-ju on Stackoverflow, if you search for "How to use fmt library in the header-only mode?" you should see the answer I found. If this forum allows direct links, it is here: https://stackoverflow.com/questions/66944554/how-to-use-fmt-library-in-the-header-only-mode
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Nov ’22
Reply to Tab View not working.
the code you have posted does not compile - ContentView5 and Tutorial are missing. The PreviewProvider is missing - usually this builds your ContentView, but for some reason you have a ContentView100. It would be easier to read your code if you posted inside a code block (see the little icons at the bottom of the Your Reply pane). Try again and maybe someone can help you out!
Topic: Programming Languages SubTopic: Swift Tags:
Replies
Boosts
Views
Activity
Nov ’22
Reply to error build: Command Ld failed with a nonzero exit code
in Xcode, go to View/Navigators/Reports. (the navigator is the panel on the left, which can be closed. The Report navigator can also be chosen by the rightmost button at the top of this panel). Click the build log. On the right, the log will open. You'll see a Link stage near the end of the log. Select that stage, and a little icon will appear at the end of the line you have just highlighted. You can click that to expose the detailed link log.
Replies
Boosts
Views
Activity
Oct ’22
Reply to DriverKit code signing/driver loading issues.
In Xcode, select the dext target, then under Signing, you should see a section labelled "DriverKit", with a Provisioning Profile: which you cannot modify, called "Xcode Managed Profile". If you click on the (i) here, does everything seem as you expect? You should see some capabilities, and some entitlements. Do they all have tick marks? Find your app in the Derived Data folder, and drill down to the dext, and look at its .embeddedprofile (QuickLook should open it for you, just use the space bar). Does it look correct? Follow the advice from Quinn here https://developer.apple.com/forums/thread/656490
Topic: App & System Services SubTopic: Drivers Tags:
Replies
Boosts
Views
Activity
Oct ’22
Reply to Where is my kext log(kernel log)
first question I have is "do you really need a driver"? If your device provides a service which is only useful to one application, a driver may be inappropriate or unnecessary, particularly if the interface is USB. In addition, kexts are being replaced by dexts, so even if you need a driver, that driver may not need to be in the kernel (or at least, not the parts that you write). I would advise you to use os_log(OS_LOG_DEFAULT, ) to begin with. To view the logs, use the Console app and filter on some unique string in your message (I like to use "XXXX"). This is primitive but there are less things to go wrong. You can also filter on "com.apple.driver.IOKitTest" to find all strings logged from your driver or about your driver. You can also use the command-line interface to the ASL (Apple System Log), log. It has a very long man page which refers to an even longer piece of documentation about how to build the predicates used for --predicate. It is so complicated I rarely use it. See https://developer.apple.com/documentation/os/logging/viewing_log_messages?language=objc
Topic: App & System Services SubTopic: Drivers Tags:
Replies
Boosts
Views
Activity
Oct ’22