Learning Time : 50min
My Github : Source Code
currentFilter
property to CIFilter
Stylizing Filters | Apple Developer Documentation
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() {
...
}
}
func setFilter(_ filter: CIFilter) {
currentFilter = filter
loadImage()
}