2012-10-09 81 views
18

我一直在使用自定義覆蓋UIImagePickerController控制器,並且一切工作正常。我已添加按鈕以通過前後相機之間切換 -UIImagePickerController如何從後置攝像頭進行動畫切換?

- (IBAction)changeCamera:(id)sender { 
if (self.imagePicker.cameraDevice == UIImagePickerControllerCameraDeviceRear) { 
    self.imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceFront; 
} 
else { 
    self.imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear; 
} 
} 

問題是,開關沒有動畫。我一直在使用基於UIImagePicker構建的蘋果相機應用程序,並且開關動畫正在發生變化。我該怎麼做呢?

+0

你在使用UISwitch嗎? – iOS

+0

我正在使用UIBarButtonItem。隨着開關我的意思是改變從後到前的相機動畫,就像在蘋果應用程序中它翻轉水平。 – MegaManX

+0

看看['transitionFromView:toView:duration:options:completion:'](http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html#//apple_ref/occ/clm/UIView/transitionFromView:toView:duration:options:completion :) –

回答

22

我試圖做到這一點的今天,我能得到它用下面的代碼工作:

[UIView transitionWithView:imagePickerController.view duration:1.0 options:UIViewAnimationOptionAllowAnimatedContent | UIViewAnimationOptionTransitionFlipFromLeft animations:^{ 
      imagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceRear; 
     } completion:NULL]; 

我希望這有助於人誰碰到這個問題來。

+0

感謝您的回答。它提供了我正在尋找的正確轉換,但相機視圖之間的轉換仍然有點閃爍(在轉換完成之前未設置cameraDevice)。我對增加動畫持續時間猶豫不決,因爲這個值在舊款iPad上可能會有所不同。有什麼想法嗎?我正在考慮拍攝屏幕截圖並從中轉換到圖像選擇器。 –

+0

我有同樣的問題 - 轉換是一個好主意 - 但蘋果給你沒有完成回調,所以計時是不準確的。 – daidai

+1

這個解決方案的問題在於它也會翻轉相機覆蓋視圖,這不是蘋果在自己的相機應用中執行的方式。 – HiveHicks

3

這裏有一個公認的答案,以防有人雨燕代碼需要它:

UIView.transitionWithView(imagePickerController.view!, duration: 1.0, options: [.AllowAnimatedContent, .TransitionFlipFromLeft], animations: {() -> Void in 
      imagePickerController.cameraDevice = .Rear 
      }, completion: nil) 

感謝巴勃羅!

+0

謝謝你救了我的一天! –

相關問題