如何删除UIImagePickerController中的缩放滑块

时间:2017-03-21 16:51:12

标签: ios swift 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
    }

enter image description here

3 个答案:

答案 0 :(得分:2)

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

func subviews(_ view: UIView) -> [UIView] {
    return view.subviews + view.subviews.flatMap { subviews($0) }
}

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

我希望这会有所帮助。

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

答案 1 :(得分:0)

这将删除缩放滑块:

picker.view.isUserInteractionEnabled = false

它也可能是未来的证据。

上述内容会破坏相机的用户互动。

这最终对我有用。

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

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

答案 2 :(得分:0)

应在加载showsCameraControls之前设置

UIImageViewController

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

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