Post

Replies

Boosts

Views

Activity

watchOS NavigationLink not hidden when isActive is false
I'm trying to have a navigation link that is triggered programatically. If I use the following code, on iOS, then the second NavigationLink is not put into the UI, as expected. On watchOS, however, there's a visible button with no text. How can I accomplish this on watchOS? var body: some View {   NavigationView {     VStack {       NavigationLink("No login required", destination: UnprotectedView())       NavigationLink(destination: ProtectedView(), isActive: $isActive) {         EmptyView()       }       Button("Login required", action: pushIfAuthenticated)     }     .navigationBarTitle("Choose")   } }
3
0
2.2k
Aug ’22
How do you chain CIFilter
In Apple's documentation it says this:"This method, though convenient, is inefficient if used multiple times in succession. Achieve better performance by chaining filters without asking for the outputs of individual filters."That confuses me though because I don't know how to link them together without getting the output. For example, this is my method to apply a TiltShift filter, based on the instructions from Apple's docs. When I perform the gradient filter, I have to take the outputImage of that to pass into the next filter. What's the right way to be doing this? override public var outputImage: CIImage? { guard let inputImage = inputImage else { return nil } let clamped = inputImage.clampedToExtent() let blurredImage = clamped.applyingGaussianBlur(sigma: inputRadius) var gradientParameters = [ "inputPoint0": CIVector(x: 0, y: 0.75 * inputImage.extent.height), "inputColor0": CIColor(red: 0, green: 1, blue: 0, alpha: 1), "inputPoint1": CIVector(x: 0, y: 0.5 * inputImage.extent.height), "inputColor1": CIColor(red: 0, green: 1, blue: 0, alpha: 0) ]; guard let gradientImage = ciImage(from: "CILinearGradient", parameters: gradientParameters) else { return nil } gradientParameters["inputPoint0"] = CIVector(x: 0, y: 0.25 * inputImage.extent.height) guard let backgroundGradientImage = ciImage(from: "CILinearGradient", parameters: gradientParameters) else { return nil } let maskParameters = [ kCIInputImageKey: gradientImage, kCIInputBackgroundImageKey: backgroundGradientImage ] guard let maskImage = ciImage(from: "CIAdditionCompositing", parameters: maskParameters) else { return nil } let combinedParameters = [ kCIInputImageKey: blurredImage, kCIInputBackgroundImageKey: clamped, kCIInputMaskImageKey: maskImage ] return ciImage(from: "CIBlendWithMask", parameters: combinedParameters) } private func ciImage(from filterName: String, parameters: [String: Any]) -> CIImage? { guard let filtered = CIFilter(name: filterName, parameters: parameters) else { return nil } return filtered.outputImage }
5
1
3.4k
Aug ’23
Xcode won't open storyboard
When I try to re-open the storyboard I was just editing in the current production version of Xcode it says"The document Main.storyboard could not be opened. The operation couldn't be completed. (com.apple.InterfaceBuilder error -1)"What in the world do I do to fix that? I *really* don't want to go back to my last git commit for that file because there have been quite extensive changes with pretty complex autolayout settings.
7
0
7.3k
Oct ’22