2009-12-29 87 views
4

我正在使用UIImagePicker訪問我的iPhone應用程序上的相機。我希望能夠爲imagepicker提供兩種不同的疊加層,具體取決於iPhone的方向。是否有可能做到這一點?看起來如果我將下面的方法放在擁有UIImagePickerController的類中,它根本不會被調用,並且在上面的任何uiviewcontroller中,只有在UIImagePickerController未處於活動狀態時纔會調用它。UIImagePickerController覆蓋自動旋轉

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    NSLog(@"shouldAutorotate called"); 
    return YES; 
} 

任何想法如何達到預期效果?

回答

3

該文檔指出,UIImagePickerController僅支持縱向模式,因此可能沒有支持這種方式。

如果你正在使用presentModalViewController:animated來顯示imagepicker,那麼我相信只有模態控制器纔會得到像shouldAutorotateToInterfaceOrientation這樣的消息。

通常情況下,您可能會繼承UIImagePickerController以覆蓋適當的方法,但似乎也不支持子類化。

我懷疑你將不得不實際使用UIAccelerometer並在你的覆蓋視圖上做手動視圖旋轉以響應加速消息。

編輯:

實際上,嘗試使用[NSNotificationCenter的addObserver:爲UIDeviceOrientationDidChangeNotification。

+0

我建議你嘗試一下Nimrod在最後提出的建議:[NSNotificationCenter addObserver:用於UIDeviceOrientationDidChangeNotification。我這樣做並將我自己的90度仿射變換應用於幾個按鈕和標籤,然後當ImagePicker被解散時,使用設備方向來猜測用戶想要用於圖像的方向。雖然它很黑,但它很有用,我不認爲它會冒犯蘋果。但它不是真正的AutoRotation。 – 2013-06-14 16:05:19

+0

,或者比猜測想要的旋轉更好,請使用myimage.imageOrientation。 – 2013-06-14 16:17:15

0

實際上,使用原始加速計數據,您可以確定何時替換疊加層,以便做到這一點!

0

可以使用變換覆蓋的屬性這樣

cameraOverlayView.transform = CGAffineTransformMakeRotation(-3.141592/2)旋轉所述覆蓋圖;