UIImagePickerControllerDelegate到Swift?

问题描述 投票:2回答:5
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)
    {

        var imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        imagePicker.sourceType = UIImagePickerControllerSourceType.Camera;
        //imagePicker.mediaTypes = kUTTypeImage
        imagePicker.allowsEditing = false

        self.presentViewController(imagePicker, animated: true, completion: nil)

    }

我似乎无法转换为kUTTypeImage到swift,如果我注释掉这行相机启动,但屏幕是黑色的。有任何想法吗?这是客观的C语法:

imagePicker.mediaTypes = @[(NSString *) kUTTypeImage];
ios objective-c uiimagepickercontroller swift
5个回答
3
投票

显然这很简单:

if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)
{
    var imagePicker = UIImagePickerController()
    imagePicker.delegate = self
    imagePicker.sourceType = UIImagePickerControllerSourceType.Camera;
    imagePicker.mediaTypes = [kUTTypeImage]
    imagePicker.allowsEditing = false

    self.presentViewController(imagePicker, animated: true, completion: nil)
}

2
投票

我在XCode6 beta5中测试了这些代码,发现以下错误:

致命错误:数组元素无法桥接到Objective-C

线程1:EXC_BREAKPOINT(代码= EXC_ARM_BREAKPOINT,子代码-0xe7ffdefe)

原因是我们无法在XCode6 beta5中将带有对象的数组分配给imagePicker.mediaTypes:

imagePicker.mediaTypes = [kUTTypeImage]

我通过init函数用对象初始化了数组,现在它工作正常↓↓↓

imagePicker.mediaTypes = NSArray(object: kUTTypeImage)

1
投票

要定义kUTTypeMovie,您可以使用:

imagePicker.mediaTypes = [String(kUTTypeMovie)]

0
投票

要添加电影和图像,您可以执行此操作。

let availableMediaTypes = UIImagePickerController.availableMediaTypesForSourceType(.Camera)
self.imagePickercontroller.mediaTypes = availableMediaTypes!

您会注意到,在显示imagePickercontroller时,您可以导航到视频或捕获图像按钮。接下来只需检查委托方法“didFinishPickingMediaWithInfo”中的mediatype类型


0
投票

标记为正确答案的代码在Swift 4+中不再有效,因为已经进行了一些更改。

UIImagePickerControllerSourceType.Camera改为UIImagePickerController.SourceType.cameraself.presentViewController(...)改为self.present(...)

以下是适用于Swift 4+的相同代码:

if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.camera)
    {

        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        imagePicker.sourceType = UIImagePickerController.SourceType.camera;
        imagePicker.allowsEditing = false

        self.present(imagePicker, animated: true, completion: nil)

    }
© www.soinside.com 2019 - 2024. All rights reserved.