繁体   English   中英

cameraOverlayView以上快门动画

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM