Learning Time : 50min

My Github : Source Code

My Note index link

day66.png

KeyWords

Customizing out filter using confirmationDialog()

Implement the confirmation dialog

Stylizing Filters | Apple Developer Documentation

Core Image Filter Reference

struct ContentView: View {
    ...
		@State private var currentFilter: CIFilter = CIFilter.sepiaTone()
    
    @State private var showingFilterSheet = false

    var body: some View {
        NavigationView {
            VStack {
                ...
            }
            .padding([.horizontal, .bottom])
            .navigationTitle("Instafilter")
            .sheet(isPresented: $showingImagePicker) {
                ImagePicker(image: $inputImage)
            }
            .onChange(of: inputImage) { newValue in
                loadImage()
            }
            .confirmationDialog("Select a filter", isPresented: $showingFilterSheet) {
                Button("Crystallize") { setFilter(CIFilter.crystallize()) }
                Button("Edges") { setFilter(CIFilter.edges()) }
                Button("Gaussian Blur") { setFilter(CIFilter.gaussianBlur()) }
                Button("Pixellate") { setFilter(CIFilter.pixellate()) }
                Button("Sepia Tone") { setFilter(CIFilter.sepiaTone()) }
                Button("Unsharp Mask") { setFilter(CIFilter.unsharpMask()) }
                Button("Vignette") { setFilter(CIFilter.vignette()) }
                Button("Cancel", role: .cancel) { }
            }
        }
    }
    
    func loadImage() {
        ...
    }
    
    func save() {
        
    }
    
    func applyProcessing() {
        ...
    }
}

Modifying filters dynamically

func setFilter(_ filter: CIFilter) {
    currentFilter = filter
    loadImage()
}