Configuring CIFilter in Swift

How to translate the last line of the following ObjC code in Swift:

CGAffineTransform transform = CGAffineTransformIdentity; CIFilter *clampFilter = [CIFilter filterWithName:@"CIAffineClamp"]; [clampFilter setValue:[NSValue valueWithBytes:&transform objCType:@encode(CGAffineTransform)] forKey:@"inputTransform"]; 

Next line

 clampFilter.setValue(transform, forKey: "inputTransform") 

produces

 Type 'CGAffineTransform' does not conform to protocol 'AnyObject' 
+5
source share
2 answers

NSValue has a constructor that takes a CGAffineTransform argument:

 let transform = CGAffineTransformIdentity let clampFilter = CIFilter(name: "CIAffineClamp") let val = NSValue(CGAffineTransform: transform) clampFilter.setValue(val, forKey: "inputTransform") 

Update for Swift 3:

 let transform = CGAffineTransform.identity let clampFilter = CIFilter(name: "CIAffineClamp")! let val = NSValue(cgAffineTransform: transform) clampFilter.setValue(val, forKey: "inputTransform") 
+13
source

It can do it.

 var transform = CGAffineTransformIdentity; var clampFilter = CIFilter(name: "CIAffineClamp") var value = NSValue(CGAffineTransform: transform) clampFilter.setValue(value, forKey: "inputTransform") 
+1
source

Source: https://habr.com/ru/post/1204265/


All Articles