【问题标题】:How to let user toggle between front facing and rear camera in UIImagePicker?如何让用户在 UIImagePicker 中的前置摄像头和后置摄像头之间切换?
【发布时间】:2020-11-15 22:33:30
【问题描述】:

如何让用户在 UIImagePicker 中切换前置摄像头和后置摄像头?

-(void)takePhoto {
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
#if TARGET_IPHONE_SIMULATOR
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
#else
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
#endif
imagePickerController.editing = YES;
imagePickerController.delegate = (id)self;
[self presentModalViewController:imagePickerController animated:YES];
 }

【问题讨论】:

    标签: ios objective-c cocoa-touch


    【解决方案1】:

    如有必要,非常乐意删除此内容,只是想提供帮助....

    我刚刚尝试了使用 UIImagePickerController 的 Swift 编写的应用程序,其中包含自 2016 年以来我没有接触过的代码。它看起来与您的代码相似 - 除了 allowsEditing = false,对您来说意味着 editing = NO . (我还检查了后置摄像头,以确保它不是运行代码的模拟器。)对我来说,UIImagePickerController 自动 为用户提供了一种切换到前置摄像头的方法-面对摄像头。

        if UIImagePickerController.availableCaptureModes(for: .rear) != nil {
            picker.allowsEditing = false
            picker.sourceType = UIImagePickerController.SourceType.camera
            picker.cameraCaptureMode = .photo
            picker.modalPresentationStyle = .fullScreen
            present(picker,
                    animated: true,
                    completion: nil)
        } else {
            noCamera()
        }
    }
    

    您是否尝试将编辑设置为 NO?

    【讨论】:

    • 感谢您的回复。我只是尝试将其设置为NO,结果相同。更新中
    • @McMonty,你在什么设备上测试? iPhone 还是 iPad?我拥有的设备是 iPhone SE 原装、iPad Mini 和 iPro 12.9。在两台 iPad 上,我看到右侧拍摄快照按钮上方的切换按钮。在 iPhone 上,控件是固定的,纵向它们位于底部,而切换开关位于右下角。 “固定”是指在横向中,控件的移动取决于横向左侧或横向右侧。
    • iPad Mini iOS 9.3.5
    • 啊。那是我在 2016 年最初的目标,但现在我的 iPad 使用的是 iOS 14 beta 3——我的下一个应用程序就是以此为目标。祝你好运!
    【解决方案2】:

    说得再多也不为过。在 Xcode 中编写代码时,您可以右键单击任何类、枚举、方法等以浏览定义并继续阅读。 因此,当您右键单击 UIImagePickerControllerSourceTypeCamera 和“跳转到定义”时,您最终会阅读 UIKit/UIImagePickerController.h

    协议<UIImagePickerControllerDelegate> 知道一个名为UIImagePickerControllerCameraDevice 的枚举有两个条目,UIImagePickerControllerCameraDeviceRearUIImagePickerControllerCameraDeviceFront

    后来协议告诉你,你有一个

    @property(nonatomic) UIImagePickerControllerCameraDevice cameraDevice;
    

    可用。

    意思,可以设置

    imagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront;
    

    并且还定义在您的 imagePickerController 遵循的协议中

    @property(nonatomic) BOOL showsCameraControls;
    

    所以你可以

    imagePickerController.showsCameraControls = YES;
    

    使您和用户知道如何处理该界面变得容易。

    【讨论】:

    • @Ol_Sen,你看到我的回答了吗? OP 希望用户能够在摄像头之间切换,而不仅仅是强制切换到一个 - 这似乎是UIImagePickerController 的一项功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    相关资源
    最近更新 更多