2016-01-04 36 views
-1

我使用下面的代碼與它的覆蓋視圖一起顯示UIPickerController:UIPickerController留下黑色底欄

-(void) viewDidLoad{ 
    self.overlayView = [[OverlayViewController alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.overlayView.delegate = self; 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
    { 
     imagePickerController = [[UIImagePickerController alloc] init]; 
     imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; 
     imagePickerController.modalPresentationStyle = UIModalPresentationFullScreen; 
     imagePickerController.cameraOverlayView.frame=self.view.frame; 
     imagePickerController.showsCameraControls = NO; 
     imagePickerController.navigationBarHidden = YES; 
     imagePickerController.toolbarHidden = YES; 
    //imagePickerController.cameraViewTransform = CGAffineTransformScale(imagePickerController.cameraViewTransform, 1.0, 1.3); 
     imagePickerController.delegate = self.overlayView; 
     // as a delegate we will be notified when pictures are taken and when to dismiss the image picker 

     [self.view addSubview:imagePickerController.view]; 
     imagePickerController.cameraOverlayView =self.overlayView.view; 
    } else { 
     [self.view addSubview:self.overlayView.view]; 

    } 
} 

但是屏幕保持iPhone在畫像時在底部顯示一個黑條。您可能會在所附的屏幕截圖中看到橫幅中沒有橫條。如何解決它? Portrait Landscape

+0

看起來overlayView是以編程方式創建的,您需要調整overlayView的模式(Scale to Fill,Aspect Fit,..)或調整攝像頭視圖的大小。 在您的肖像截圖中,相機視圖適合主視圖,並且由於相機(4:3)和iPhone屏幕(16:9)的高寬比不同,您會看到黑條。 在您的橫向屏幕截圖中,似乎縮放了相機視圖以填充屏幕,但圖像在頂部和底部被裁剪。 – iCode

+0

那我應該怎麼做呢?我不能依靠未來設備的最終尺寸來正確地加熱屏幕......是不是有辦法填滿屏幕,所以它是? –

+0

爲overlayView我坦率地說,沒有其他方式來創建它,但編程。甚至連UIImagePicker控制器都沒有Storyboard對應物,關於它的overlayView怎麼說?! –

回答

0

我實現了其作爲線程建議在故事板插入後的viewController:

-(void) viewDidLoad{ 
    self.overlayView = [[OverlayViewController alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.overlayView.delegate = self; 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
    { 
     imagePickerController = [[UIImagePickerController alloc] init]; 
     imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; 
     imagePickerController.modalPresentationStyle = UIModalPresentationFullScreen; 
     imagePickerController.cameraOverlayView.frame=self.view.frame; 
     imagePickerController.showsCameraControls = NO; 
     imagePickerController.navigationBarHidden = YES; 
     imagePickerController.toolbarHidden = YES; 

     //imagePickerController.cameraViewTransform = CGAffineTransformScale(imagePickerController.cameraViewTransform, 1.0, 1.3); 
     imagePickerController.delegate = self.overlayView; 
     // as a delegate we will be notified when pictures are taken and when to dismiss the image picker 
     self.overlayView=[self.storyboard instantiateViewControllerWithIdentifier:@"OverlayViewController"]; 
     [self.view addSubview:imagePickerController.view]; 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showSlider) name:@"showSlider" object:nil]; 
     imagePickerController.cameraOverlayView =self.overlayView.view; 
     CGSize screenSize = [[UIScreen mainScreen] bounds].size; 
     float cameraAspectRatio = 4.0/4.0; //! Note: 4.0 and 4.0 works 
     float imageWidth = floorf(screenSize.width * cameraAspectRatio); 
     float scale = ceilf((screenSize.height/imageWidth) * 10.0)/10.0; 
     self.imagePickerController.cameraViewTransform = CGAffineTransformMakeScale(scale, scale); 
     } else { 
     [self.view addSubview:self.overlayView.view]; 
    } 
} 

而事實上事情的作品扭捏cameraAspectRatio到4.0,4.0後的罰款。然而,當在風景中展示應用時,圖像和控制會逆轉。這就是我的門把手所顯示的。此外,當我將iPhone指向上方時,圖像橫向移動,反之亦然。 Rotated image 它可能是固定的或我需要放棄景觀選項?