「カメラ/写真」ベースのアプリケーションに取り組んでいます。
アプリケーションの起動 (sideMenu) : MainView は、カメラ ボタンを備えたNavigationCTRL内の通常の VC です。
それをタップすると、新しい VC がプッシュされます。
これは正常ですが、内部には次のようなものがあります。
let captureSession: AVCaptureSession = AVCaptureSession()
var currentCaptureDevice: AVCaptureDevice?
var deviceInput: AVCaptureDeviceInput?
var stillCameraOutput: AVCaptureStillImageOutput?
var previewLayer: AVCaptureVideoPreviewLayer?
つまり、カスタム カメラ ビュー コントローラーです。
この方法で、ユーザー エクスペリエンスを向上させることができます。
次に、(ライブラリから、またはショットボタンをタップして)写真を撮ることができます(いくつかの機能[タイマー、HD、フラッシュ..]をオン/オフにした後。
写真を撮ったら、prepareForSegueメソッドを使用して、キャプチャした画像を次の VC に送信します。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == Constants.Segues.CameraToFiltersSegue {
var filterVC = segue.destinationViewController as! MYCLASSVC
filterVC.originalImage = pictureImage
}
}
そして、それは新しい VC をプッシュし、...
私はこのメッセージを受け取りました: BSXPCMessage はメッセージのエラーを受け取りました: 接続が中断されました
現在の VC には以下が含まれます。
- imageView (UIImageView) : 前の画像
- オリジナルからフィルター処理された小さな (サムネイルのような) 写真を含む小さなコレクション ビュー ( CIFilter )
このビューにはこれ以上のものはありません。しかし、私はこのメッセージを持っています。
このメッセージはどうですか?
別の方法で何かをする必要がありますか?
これが私のフィルターの設定方法です:
//At the top of the class
//EAGLRenderingAPI.OpenGLES2 but maybe EAGLRenderingAPI.OpenGLES3??
static let contextFast = CIContext(EAGLContext: EAGLContext(API: EAGLRenderingAPI.OpenGLES2), options: [kCIContextWorkingColorSpace: NSNull(), kCIContextUseSoftwareRenderer: false])
//In my static method (one of the parameter is "originalImage")
var ciimage: CIImage = CIImage(image: originalImage)
var imageFilter = CIFilter(name: "CIPhotoEffectInstant")
filter.setValue(ciimage, forKey: kCIInputImageKey)
let cgimg = contextFast.createCGImage(imageFilter.outputImage, fromRect: imageFilter.outputImage.extent())
return UIImage(CGImage: cgimg, scale: 1.0, orientation: image.imageOrientation)
このコードは高速に実行されます。メッセージがどこから来るのかわかりません。
何かアイデアや何かお手伝いできることがあればお願いします。