如何删除 UIImagePickerController 中的缩放滑块

How to remove zoom slider in UIImagePickerController

我需要删除相机屏幕中的缩放滑块。 这是我的代码:

import UIKit

extension UIImagePickerController {
    class func sourceCameraModePhoto(_ delegate: UIImagePickerControllerDelegate & UINavigationControllerDelegate, overlayView: UIView) -> UIImagePickerController {
        let picker = UIImagePickerController()
        picker.sourceType = .camera
        picker.cameraCaptureMode = .photo
        picker.showsCameraControls = false
        picker.view.addSubview(overlayView)
        picker.delegate = delegate
        return picker
    }

我想找到了这个问题的答案: 缩放滑块是一个 UISlider,如果您的 imagePickerController 的视图 属性 在其子视图下方包含一个 UISlider,您可以将其 alpha 设置为零。如果您升级到 iOS10.

,则会出现此问题
func subviews(_ view: UIView) -> [UIView] {
    return view.subviews + view.subviews.flatMap { subviews([=10=]) }
}

let myViews = subviews(imagePickerController.view)
for view in myViews {
    if view is UISlider {
        view.alpha = 0.0
    }
}

希望对您有所帮助。

让我知道是否有更好的解决方案。

这将删除缩放滑块:

picker.view.isUserInteractionEnabled = false

而且它可能也是未来的证明。

以上删除了相机的用户交互。

这就是最终对我有用的方法。

将 cameraOverlay 作为子视图添加到选择器。

if let overlay = overlayViewController?.view {
           imagePicker.view.addSubview(overlay)
        }

showsCameraControls 应该在加载 UIImageViewController 之前设置。

这意味着你可以在自定义的初始化中使用它UIImageViewController

- (instancetype)init {
    if (self = [super init]) {
        self.showsCameraControls = false;
    }
    return self;
}