【发布时间】:2016-01-04 13:59:37
【问题描述】:
我正在使用以下代码来显示 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 保持纵向时,屏幕底部会显示一个黑条。正如您在附加的屏幕截图中看到的那样,没有横栏出现。如何解决?
【问题讨论】:
-
似乎overlayView是通过程序创建的,您需要调整overlayView的Mode(Scale to Fill、Aspect Fit等)或调整相机视图的大小。在您的纵向屏幕截图中,相机视图适合主视图并且您会看到黑条,因为相机 (4:3) 和 iPhone 屏幕 (16:9) 的纵横比不同。在您的横向屏幕截图中,相机视图似乎被缩放以填充屏幕,但图像在顶部和底部被裁剪。
-
那我应该怎么做呢?我不能依靠未来设备的最终尺寸来正确地冻结屏幕……难道没有办法只填满屏幕吗?
-
overlayView 的 A 坦率地说,除了以编程方式创建它之外,我没有其他方法可以创建它。甚至 UIImagePicker 控制器都没有对应的 Storyboard,它的 overlayView 怎么说?!
标签: ios iphone uiimagepickercontroller