专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Swift

UIImagePickerController实现照相录像或者选取选择图片和影像(Swift)

发布时间:2011-06-30 07:30:09 文章来源:www.iduyao.cn 采编人员:星星草
UIImagePickerController实现拍照录像或者选取选择图片和影像(Swift)

UIImagePickerController类管理系统的或者自定义的UI界面来获取设备上的图片和影像,拍照或者录像. ImagePickerController管理这个界面并把获得的结果传递给delegate.

UIImagePickerController根据不同的来源类型(sourceType)来展示不同的界面和实现不同的功能.

UIImagePickerControllerSourceTypeCamera: 拍照或者摄像

UIImagePickerControllerSourceTypePhotoLibrary: 选择图像

UIImagePickerControllerSourceTypeSavedPhotosAlbum: 选择录像

建立UIImagePickerController的步骤:

<span style="font-family:Times New Roman;">//必须遵循UINavigationControllerDelegate和UIImagePickerControllerDelegate哦
class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
    var imagePickerController:UIImagePickerController!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //判断是否获得相机
        if ((UIImagePickerController.availableMediaTypesForSourceType(UIImagePickerControllerSourceType.Camera)) != nil) {
            //初始化
            imagePickerController = UIImagePickerController()
            //设置代理
            imagePickerController.delegate = self;
            //设置类型
            imagePickerController.sourceType = .Camera
            //设置是否能够编辑
            imagePickerController.allowsEditing = true
            //展示UIImagePickerController
            self.presentViewController(imagePickerController, animated: true, completion: {})
        }
    }

    //delegate方法
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
        let dic = info as NSDictionary
        //原始图片
        let image = dic.objectForKey("UIImagePickerControllerOriginalImage") as UIImage
        //编辑过后的图片
        let editedImage = dic.objectForKey("UIImagePickerControllerEditedImage") as UIImage
        //MediaType
        let mediaType = dic.objectForKey("UIImagePickerControllerMediaType") as String
    }
    
    func imagePickerControllerDidCancel(picker: UIImagePickerController) {
        
    }
}</span>
UIImagePickerViewController的界面可以自定义

<span style="font-family:Times New Roman;font-size:12px;"></span><pre name="code" class="objc"><span style="font-family:Times New Roman;">            //自定义UIImagePickerController的UI界面
            imagePickerController.showsCameraControls = false
            //1.覆盖涂层
            let view = UIView() //自定义的View
            view.frame = imagePickerController.cameraOverlayView!.frame
            imagePickerController.cameraOverlayView = view;
            //2.设置相机内容视图的大小
            imagePickerController.cameraViewTransform = CGAffineTransformScale(imagePickerController.view.transform, 0.9, 0.9)</span>



照相的实现

<span style="font-family:Times New Roman;"></span><pre name="code" class="objc"><span style="font-family:Times New Roman;">            //判断相机设备是否可用
            let frontCameraAviable = UIImagePickerController.isCameraDeviceAvailable(.Front)
            //相机设备支持的模式,返回NSNumber数组,[Photo,Vedio]
            let cameraModel = UIImagePickerController.availableCaptureModesForCameraDevice(.Front)
            //相机设备支持闪光灯与否
            let canFlashOrNot = UIImagePickerController.isFlashAvailableForCameraDevice(.Front)
            
            //设置相机设备,前置或者后置摄像头
            imagePickerController.cameraDevice = .Front
            //设置相机的模式
            imagePickerController.cameraCaptureMode = .Photo
            //设置闪光灯模式
            imagePickerController.cameraFlashMode = .On</span>

//拍照
imagePickerController.takePicture()

录像相关
<span style="font-family:Times New Roman;">            //录像的质量
            imagePickerController.videoQuality = .TypeHigh
            //录像的是长,默认10分钟
            imagePickerController.videoMaximumDuration = 20
            //开始录像
            imagePickerController.startVideoCapture()
            //停止录像
            imagePickerController.stopVideoCapture()</span>
五个常量

<span style="font-family:Times New Roman;">enum UIImagePickerControllerSourceType : Int {//数据源
    
    case PhotoLibrary
    case Camera
    case SavedPhotosAlbum
}

enum UIImagePickerControllerQualityType : Int {//视频的画质
    
    case TypeHigh // highest quality
    case TypeMedium // medium quality, suitable for transmission via Wi-Fi 
    case TypeLow // lowest quality, suitable for tranmission via cellular network
    
    case Type640x480 // VGA quality
    
    case TypeIFrame1280x720
    case TypeIFrame960x540
}

enum UIImagePickerControllerCameraCaptureMode : Int {//相机模式
    
    case Photo
    case Video
}

enum UIImagePickerControllerCameraDevice : Int {//相机类型
    
    case Rear
    case Front
}

enum UIImagePickerControllerCameraFlashMode : Int {//闪光灯类型
    
    case Off
    case Auto
    case On
}
</span>


友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: