2012-07-13 4 views
1

가로 모드에서만 실행되는 앱이 있습니다. 사진을 찍기 위해 카메라를 제시하면 화면이 가로로 표시되지만 실시간 미리보기가 회전됩니다. 사진을 찍을 때 스틸 미리보기가 정확합니다. iOS 가로 방향 앱에서만 사진 찍기

나는이와 함께 카메라 이미지를 회전하려고 :
self.navigationController.navigationBarHidden=YES; 
UIImagePickerController *picker=[[UIImagePickerController alloc] init]; 
picker.delegate=self; 
picker.sourceType=UIImagePickerControllerSourceTypeCamera; 
picker.showsCameraControls=YES; 
[picker setCameraFlashMode:UIImagePickerControllerCameraFlashModeOff]; 
CGAffineTransform transform=picker.view.transform; 
transform= CGAffineTransformMakeRotation(-90*M_PI/180); 
[picker setCameraViewTransform:transform]; 
[self presentModalViewController:picker animated:YES]; 
[picker release]; 

지금 내가 올바른 방법 라운드 실시간 미리보기하지만 작은보기 영역이보기입니다 (때문에 아마도) 초상화에 얻을)?. 다시 말하면 여전히 미리보기가 정확합니다.

어떻게 수정합니까?

답변

0

이제 가로 모드뿐만 아니라 세로 모드에서도 사진을 찍고 싶습니까? 그렇다면 아래에 내 코드이지만 세로 모드 oly 미리보기 미리보기 Ixt 미리보기 세로 모드로 얻을 것이다 때문에 가로 모드 U 원하는 사용자 지정 메서드를 사용하여 UIImagePickerViewController 만들어야 할 경우 미리.

하지만 당신은, 당신이 원하는 모드 중 하나에서 사진을 촬영 당신을 도움이 될 수 아래의 코드를 볼 수 있습니다 ..

-(void)cameraAction 
{ 
    // Create image picker controller 
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 

    // Set source to the camera 
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 

    // Delegate is self 
imagePicker.delegate = self; 

    // Allow editing of image ? 
    imagePicker.allowsEditing = NO; 

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
    { 
     NSLog(@"called"); 
     // Show image picker 
     [self presentModalViewController:imagePicker animated:YES]; 
    } 
    else 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error accessing the camera" message:@"Camera did not respond" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
    } 
} 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 

    // Access the uncropped image from info dictionary 
    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    [picker release]; 

    [self dismissModalViewControllerAnimated:NO]; 

    editImageView=[[EditImageViewController alloc] initWithNibName:@"EditImageViewController" bundle:[NSBundle mainBundle]]; 
    editImageView.delegate=self; 
    [self presentModalViewController:editImageView animated:YES]; 
    [editImageView.imgView setImage:image]; 
} 
+0

UIImagePickerController를 서브 클래스 또는 가로로 강제 권장되지는 http://stackoverflow.com/a/16346664/568529 – akaralar

0

내 접근 방식은 표시하고 가로 모드에서을 유지하기 위해 UIImagePickerController를 강제하는 것입니다. 실제 +는 사용자가 세로로 열려고 시도 할 때만 경고를 표시하면 사용자가 가로로 시작하지만 사진을 찍는 동안 세로로 회전 할 수도 있습니다.

@implementation UIImagePickerController (noRotation) 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation /* iOS 5 */ 
{ 
    return UIInterfaceOrientationIsLandscape(toInterfaceOrientation); 
} 

- (NSUInteger)supportedInterfaceOrientations /* iOS 6 */ 
{ 
    return UIInterfaceOrientationMaskLandscape; 
} 

@end 
+1

작업을 수행하지만 (아이폰 OS 6.1에서 테스트) 하나의 심각한 버그가를 참조하십시오. 그것은 기록하지만 기록하는 동안 이미지를 세로 방향으로 회전시킵니다. –