【问题标题】:UIImagePicker and overlaysUIImagePicker 和覆盖
【发布时间】:2011-05-28 16:45:16
【问题描述】:

在我的应用程序中,使用 uiimagepicker 选择图像后,将通过 web 服务对其进行处理。 Web 处理需要一秒钟,所以我想创建一个带有活动指示器视图的灰色叠加层。

我的问题是 UIImagePickerView 视图似乎在处理完成之前一直位于所有内容之上。

我尝试在加载叠加层或开始处理之前使用[myPicker dismissModalViewControllerAnimated:YES];,但视图仍在屏幕上。之后,我的叠加层按如下方式加载

ovController = [[OverlayViewController alloc] initWithNibName:@"OverlayViewController" bundle:[NSBundle mainBundle]];

CGFloat yaxis = self.navigationController.navigationBar.frame.size.height;
CGFloat width = self.view.frame.size.width;
CGFloat height = self.view.frame.size.height;

CGRect frame = CGRectMake(0, yaxis, width, height);
ovController.view.frame = frame;
ovController.view.backgroundColor = [UIColor grayColor];
ovController.view.alpha = 0.7;

[self.view insertSubview:ovController.view aboveSubview:self.view];

在关闭 myPicker 之前,我也尝试过使用 [[myPicker cameraOverlayView] insertSubview:ovController.view];,但无济于事。

为了清楚起见,我正在尝试在 UIImagePicker 消失后,但在 Web 处理开始之前将“加载”覆盖带到屏幕上。

我们将不胜感激。谢谢

【问题讨论】:

    标签: iphone ios overlay uiimagepickercontroller subview


    【解决方案1】:

    听起来您正在主线程上进行上传,这会锁定视图以防止更新。您可以尝试在单独的线程上进行上传,以便主线程可以关闭图像选择器并显示叠加层。

    【讨论】:

    • 同意,视图在方法完成后更新,所以首先关闭选择器,然后添加视图,然后在后台调用另一个方法。我通常只做 [self performSelector:@selector(processImage:) withObject:picker.image afterDelay:0.05],然后视图的事情就完成了,图像的处理发生在另一个运行循环中。使用后台线程应该类似,你只需要处理自动释放池。
    猜你喜欢
    • 1970-01-01
    • 2018-10-07
    • 2019-12-18
    • 2012-07-18
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多