use*_*888 36 uiimagepickercontroller swift xcode6 ios8
我正在尝试UIImagePickerController
快速使用但不工作......
我的ViewController:
class ViewController: UIViewController {
@IBOutlet var imag : UIView = nil
@IBAction func capture(sender : UIButton) {
println("Button capture")
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)
{
var imag = UIImagePickerController()
imag.delegate = self
imag.sourceType = UIImagePickerControllerSourceType.Camera;
imag.mediaTypes = kUTTypeImage
imag.allowsEditing = false
self.presentViewController(imag, animated: true, completion: nil)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在下面的代码行中有错误
imag.delegate = self
(Type'ViewControlles does confoorm to protocol 'UIImagePickerControllerDelegate')
imagePicker.mediaTypes = kUTTypeImage
(use of unresolved identifier kUTTypeImage)
Run Code Online (Sandbox Code Playgroud)
我已经阅读过kUTTypeImage
在swift 中无法使用的内容.但是我不知道,我正在使用这个函数.有帮助吗?
谢谢!!
小智 84
您还应该在控制器中导入MobileCoreServices:
import MobileCoreServices
Run Code Online (Sandbox Code Playgroud)
然后将类型放在方括号内,如下所示:
image.mediaTypes = [kUTTypeImage]
Run Code Online (Sandbox Code Playgroud)
Swift 2.0及更高版本
image.mediaTypes = [kUTTypeImage as String]
Run Code Online (Sandbox Code Playgroud)
Aar*_*ger 43
在Swift 2.0(Xcode 7)中,您需要显式地将kUTTypeImage
(a CFString
)转换为String
:
picker.mediaTypes = [kUTTypeImage as String]
Run Code Online (Sandbox Code Playgroud)
您仍然需要导入移动核心服务才能定义此符号:
import MobileCoreServices
Run Code Online (Sandbox Code Playgroud)
的这就是说,默认值mediaTypes
是[kUTTypeImage]
,所以你不需要设置它,如果这就是你想要的.
Rom*_*man 24
你也应该添加UINavigationControllerDelegate
到协议列表中的ViewController
一个和一个可选的委托函数(如果你计划得到一张图片)
这是您的问题的工作代码:
import UIKit
import MobileCoreServices
class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){
println("i've got an image");
}
@IBAction func capture(sender : UIButton) {
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera){
println("Button capture")
var imag = UIImagePickerController()
imag.delegate = self
imag.sourceType = UIImagePickerControllerSourceType.Camera;
imag.mediaTypes = [kUTTypeImage]
imag.allowsEditing = false
self.presentViewController(imag, animated: true, completion: nil)
}
}
}
Run Code Online (Sandbox Code Playgroud)
从你的代码中可以看出,你在两个地方犯错是设置错误,delegate
第二个是设置媒体类型imag.mediaTypes = kUTTypeImage
第一个:如果你查看它的delegate
定义UIImagePickerController
需要确认两个协议UINavigationControllerDelegate
,UIImagePickerControllerDelegate
所以你必须在你的viewcontroller
类中采用这两个协议,如
class ViewController: UIViewController,UINavigationControllerDelegate, UIImagePickerControllerDelegate
Run Code Online (Sandbox Code Playgroud)
第二个错误:如果你查看mediaTypes
它的定义部分,显然需要传递一系列媒体类型,所以这样做
imag.mediaTypes = [kUTTypeImage]
Run Code Online (Sandbox Code Playgroud)
除此之外,我还为同一项任务编写了一个非常下降的课程
它易于理解和集成.
//Declare property
var imagePicker:ImageVideoPicker?
//Call below line of code properly, it will return an image
self.imagePicker = ImageVideoPicker(frame: self.view.frame, superVC: self) { (capturedImage) -> Void in
if let captureImage = capturedImage{
//you did it.....
}
}
Run Code Online (Sandbox Code Playgroud)
你必须像这样遵守代表
class ViewController: UIViewController, UIImagePickerControllerDelegate
Run Code Online (Sandbox Code Playgroud)
根据文档,默认情况下,媒体类型设置为图像,因此您可以继续删除该行,因为您仅将其设置为图像。
不要忘记实现文档中概述的协议方法: 文档
归档时间: |
|
查看次数: |
43638 次 |
最近记录: |