在尝试让CIFilter在iOS 10游乐场中工作时,我不断在控制台中收到无效的上下文消息并导致崩溃。
我见过CIFilters使用kCIInputImageKey在OS X游乐场中工作,如:
obj.setValue(img, forKey: kCIInputImageKey)
我假设iOS上不支持kCIInputImageKey并寻求确认。
以下是我在游乐场控制台中遇到的错误:
Jul 9 20:59:53 UITest [7538]:CGContextSaveGState:无效的上下文0x0。如果你想查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
这是我的代码:最后一行在游乐场崩溃,但在模拟器中工作正常。
import UIKit
import PlaygroundSupport
let iv = UIImageView(frame: CGRect(x: 11, y: 39, width: 354, height: 589))
//UIBeginGraphicsContew
let moi = UIImage(named:"moi")!
let moici = CIImage(image:moi)!
let moiextent = moici.extent
let center = CIVector(x: moiextent.width/2.0, y: moiextent.height/2.0)
let smallerDimension = min(moiextent.width, moiextent.height)
let largerDimension = max(moiextent.width, moiextent.height)
let grad = CIFilter(name: "CIRadialGradient")!
// OS X only??
//grad.setValue(moici, forKey: kCIInputImageKey)
grad.setValue(center, forKey:"inputCenter")
grad.setValue(smallerDimension/2.0 * 0.85, forKey:"inputRadius0")
grad.setValue(largerDimension/2.0, forKey:"inputRadius1")
let gradimage = grad.outputImage!