[英]cameraOverlayView above Shutter animation
我有一个透明的视图,使用CoreGraphics在其上绘制了一个矩形。 相机启动时,自定义叠加视图位于快门动画上方。 您所看到的是标准的相机快门,其上方有自定义矩形。 如何在快门动画下方将其正确放置? 我看过其他示例代码,但这是针对OS 3.1的,似乎没有什么不同。
这是我的代码:
-(IBAction)cameraButton{
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerCameraDeviceRear]){
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
//Add the OverlayView with the custom Rectangle
CGRect overlayFrame = CGRectMake(0.0f, 0.0f, 320.0f, 480.0f);
OverlayView *overlayView = [[OverlayView alloc]initWithFrame:overlayFrame];
picker.cameraOverlayView = overlayView;
[overlayView release];
[self presentModalViewController:picker animated:YES];
[picker release];
}
}
在iPad上,此问题不存在,并且默认情况下,叠加视图位于快门动画之后。 但是在iPhone上,叠加层显示在前面。
我找到了适合我的解决方案。
您必须使用此方法将叠加视图设置为子视图:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if (!viewController)
return;
UIView* controllerViewHolder = viewController.view;
UIView* controllerCameraView = [[controllerViewHolder subviews] objectAtIndex:0];
UIView* controllerPreview = [[controllerCameraView subviews] objectAtIndex:0];
[controllerCameraView insertSubview:self.overlayView aboveSubview:controllerPreview];
}
希望能帮助到你
原始来源: http : //www.alexcurylo.com/blog/2009/06/18/uiimagepickercontroller-in-3-0/
除了已经在做的事情之外,您可能别无选择。 如果iOS决定将叠加视图放在快门上,则只需要使用它即可(除非您想冒被应用商店拒绝的风险)。
作为一种不完善的解决方法,您可以使用alpha = 0来启动叠加层,然后一两秒后将alpha设置为1。 但是没有在“打开”之前出现快门的设定时间(我认为这取决于初始化相机硬件所需的时间),因此有时您的界面可能要等到很晚才出现,有时可能出现得太早。
我在这里回答了类似的问题。 对我有用的(在iOS 6中)是在navigationController:willShowViewController:animated中设置cameraOverlayView。
- (void) navigationController:(UINavigationController*) navigationController willShowViewController:(UIViewController*) viewController animated:(BOOL) animated {
self.imagePickerController.cameraOverlayView = ...; // your camera overlay view
}
从4.3.3版本开始,由于元素显示在顶部,因此动画被破坏,然后在动画开始时捕捉到下面。 我已将其作为雷达提交: http : //openradar.appspot.com/radar?id=1204401
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.