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];
显然这很简单:
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)
}
我在XCode6 beta5中测试了这些代码,发现以下错误:
致命错误:数组元素无法桥接到Objective-C
线程1:EXC_BREAKPOINT(代码= EXC_ARM_BREAKPOINT,子代码-0xe7ffdefe)
原因是我们无法在XCode6 beta5中将带有对象的数组分配给imagePicker.mediaTypes:
imagePicker.mediaTypes = [kUTTypeImage]
我通过init函数用对象初始化了数组,现在它工作正常↓↓↓
imagePicker.mediaTypes = NSArray(object: kUTTypeImage)
要定义kUTTypeMovie
,您可以使用:
imagePicker.mediaTypes = [String(kUTTypeMovie)]
要添加电影和图像,您可以执行此操作。
let availableMediaTypes = UIImagePickerController.availableMediaTypesForSourceType(.Camera)
self.imagePickercontroller.mediaTypes = availableMediaTypes!
您会注意到,在显示imagePickercontroller时,您可以导航到视频或捕获图像按钮。接下来只需检查委托方法“didFinishPickingMediaWithInfo”中的mediatype类型
标记为正确答案的代码在Swift 4+中不再有效,因为已经进行了一些更改。
UIImagePickerControllerSourceType.Camera
改为UIImagePickerController.SourceType.camera
和self.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)
}