後,我試圖運行void saveImageToLibrary
當調用無效captureStillImageAsynchronouslyFromConnection
[self.avSnapper captureStillImageAsynchronouslyFromConnection:captureConnection
completionHandler:handler];
完成。我會怎麼做呢?
後,我試圖運行void saveImageToLibrary
當調用無效captureStillImageAsynchronouslyFromConnection
[self.avSnapper captureStillImageAsynchronouslyFromConnection:captureConnection
completionHandler:handler];
完成。我會怎麼做呢?
如果需要在函數完成時運行一些代碼,則有「completionHandler」參數。
根據documentation:「在圖像被捕獲後調用的塊」。
編輯:你可以閱讀關於塊編程here。由於塊符號可能有點混亂,有一個簡單的技巧可以幫助你。當您使用自動完成功能在XCode中創建函數簽名時,您需要傳遞需要傳遞的變量的藍色佔位符。現在,當您在塊佔位符上點擊「輸入」時,XCode會爲您生成具有匹配語法的空白塊。
我的事情這是你想要
[self.avSnapper captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error){
CFDictionaryRef exifAttachments = CMGetAttachment(imageSampleBuffer, kCGImagePropertyExifDictionary, NULL);
if (exifAttachments){
// Do something with the attachments if you want to.
NSLog(@"attachements: %@", exifAttachments);
}
else
NSLog(@"no attachments");
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];
UIImage *image = [[UIImage alloc] initWithData:imageData];
self.vImage.image = image;
}];
我想我需要一些解釋。這是什麼? 「^(CMSampleBufferRef imageSampleBuffer,NSError *錯誤)」?我顯然需要一個不同的功能,所以我需要了解它在做什麼以及如何在那裏調用一個void – suMi 2014-09-19 16:33:10
你是什麼意思的「調用一個空白」?至於你不明白的符號,我在我的答案中加入了url來解釋。 – 2014-09-19 16:37:33
@suMi這裏^是塊表示法,一旦「captureStillImageAsynchronouslyFromConnection:」完成,用^表示法寫的東西將與所述參數一起執行。要了解更多信息,您需要熟悉ios中的「iOS中的塊」。您還可以查看http://www.raywenderlich.com/9438/how-to-use-blocks-in-ios-5-tutorial-part -2 – mhrrt 2014-09-19 17:04:12
我不知道你要求做什麼。你不明白塊符號?你不知道如何保存圖像?請說明你的問題。 – 2014-09-19 16:26:24
我不知道「block notation」我甚至不知道你在說什麼 – suMi 2014-09-19 16:29:07