Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIImagePickerController和外部显示器_Ios_Ipad_Uiimagepickercontroller - Fatal编程技术网

Ios UIImagePickerController和外部显示器

Ios UIImagePickerController和外部显示器,ios,ipad,uiimagepickercontroller,Ios,Ipad,Uiimagepickercontroller,我正在编写一个iPad kiosk类型的应用程序,允许访问者使用前向摄像头录制视频,并查看针对外部显示器的摄像头卷中的现有视频。我只是在学习XCode,并在针对iOS5的XCode 4.4.1中工作。最近似乎发生了很多变化,这使得学习变得更加困难,所以我尝试让事情尽可能简单,这就是我使用UIImagePicker的原因 一切都如我所愿,但有一个例外——我无法按照我的意愿在外部显示器和iPad之间切换。当用户录制视频时,它在iPad上是全屏的。没关系,但是在他们停止录制后,视频会立即发送到外部显示

我正在编写一个iPad kiosk类型的应用程序,允许访问者使用前向摄像头录制视频,并查看针对外部显示器的摄像头卷中的现有视频。我只是在学习XCode,并在针对iOS5的XCode 4.4.1中工作。最近似乎发生了很多变化,这使得学习变得更加困难,所以我尝试让事情尽可能简单,这就是我使用UIImagePicker的原因

一切都如我所愿,但有一个例外——我无法按照我的意愿在外部显示器和iPad之间切换。当用户录制视频时,它在iPad上是全屏的。没关系,但是在他们停止录制后,视频会立即发送到外部显示器进行审批,并且会在UIPopover中留下一个占位符图像。我更愿意看到/做的是在iPad上保持视频预览全屏,或者将视频对准UIPopover

原因是,用户在访问iPad时,外部显示器不容易看到。因此,他们被要求批准(点击使用)他们看不到的东西。最好还是把它放在iPad上。下面的代码是我用来允许录制的代码

其他一切都很好,我希望用户从库中选择视频并显示在外部监视器上,因为这是默认行为,所以效果很好

到目前为止,我能找到的最接近的答案是:

有没有一种简单的方法来禁用外部显示或阻止发送视频预览

   - (IBAction)useCameraRoll:(id)sender
{
    if([self.popoverController isPopoverVisible]) {
        [self.popoverController dismissPopoverAnimated:YES];
    } else {
        if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
        {

            UIImagePickerController *imagePicker =
            [[UIImagePickerController alloc] init];
            imagePicker.delegate = self;
            imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
            imagePicker.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeMovie, nil];

            imagePicker.allowsEditing = NO;

            self.popoverController = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
            //self.popoverController = [[UIPopoverController alloc] setContentViewController:animated];

            self.popoverController.delegate = self;

            [self.popoverController
             presentPopoverFromBarButtonItem:sender  permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

            newMedia = NO;


        }
    }
}

巧合的是,我一直在用iPad开发类似的信息亭应用程序。在我的例子中,它利用一些增强现实在外部显示器上显示相关内容。我使用iPad屏幕作为增强现实体验的配置面板

我发现,实现这一点的最佳方法是为每个显示器使用带有两个UI屏幕的单独窗口。这使您能够正确地设计体验。我不确定你是否已经在使用这种方法,但如果你没有,那么这就是你要走的路

要开始,您可以阅读代码示例。摘自摘录:

从iOS开发者库中的ExternalDisplay示例代码:

要在外部显示器上显示内容,请执行以下操作:

  • 使用UIScreen类的screens类方法确定外部显示器是否可用

  • 如果外部屏幕可用,则获取屏幕对象并查看其availableModes属性中的值。此属性包含 屏幕支持的配置

  • 选择与所需分辨率相对应的UIScreenMode对象,并将其指定给屏幕的currentMode属性 反对

  • 创建新窗口对象(UIWindow)以显示内容

  • 将screen对象指定给新窗口的screen属性

  • 配置窗口(通过添加视图或设置OpenGL ES渲染上下文)

  • 显示窗口


  • 另外,文档也非常有用。

    巧合的是,我一直在用iPad开发类似的kiosk应用程序。在我的例子中,它利用一些增强现实在外部显示器上显示相关内容。我使用iPad屏幕作为增强现实体验的配置面板

    我发现,实现这一点的最佳方法是为每个显示器使用带有两个UI屏幕的单独窗口。这使您能够正确地设计体验。我不确定你是否已经在使用这种方法,但如果你没有,那么这就是你要走的路

    要开始,您可以阅读代码示例。摘自摘录:

    从iOS开发者库中的ExternalDisplay示例代码:

    要在外部显示器上显示内容,请执行以下操作:

  • 使用UIScreen类的screens类方法确定外部显示器是否可用

  • 如果外部屏幕可用,则获取屏幕对象并查看其availableModes属性中的值。此属性包含 屏幕支持的配置

  • 选择与所需分辨率相对应的UIScreenMode对象,并将其指定给屏幕的currentMode属性 反对

  • 创建新窗口对象(UIWindow)以显示内容

  • 将screen对象指定给新窗口的screen属性

  • 配置窗口(通过添加视图或设置OpenGL ES渲染上下文)

  • 显示窗口


  • 此外,文档也非常有用。

    您是否找到了解决方案?我认为下面的答案只详细说明了如何设置外部设备。我也有一个可以绘制到外部监视器的应用程序,但是当用户使用UIImagePickerController时,它会直接在外部设备应该绘制的任何图形上绘制预览。你有没有找到解决方案?我认为下面的答案只详细说明了如何设置外部设备。我还有一个应用程序可以绘制到外部监视器,但是当用户使用UIImagePickerController时,它会直接在外部设备应该绘制的任何图形上绘制预览。