当前位置: 首页 > news >正文

[Xcode 实际操作]九、实用进阶-(13)调用相机并获取拍摄后的图片

目录:[Swift]Xcode实际操作

本文将演示如何调用相机并获取拍摄后的图片。

在项目导航区,打开视图控制器的代码文件【ViewController.swift】

 1 import UIKit
 2 
 3 //首先添加两个协议 UIImagePickerControllerDelegate, UINavigationControllerDelegate
 4 //来实现打开相机并拍照的功能
 5 class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
 6 
 7     //添加一个图像视图属性,用来显示从相机设备中读取的照片
 8     var imageView: UIImageView!
 9     //添加一个图片拾取控制器,作为当前视图控制器的属性
10     var imagePickerController: UIImagePickerController!
11     
12     override func viewDidLoad() {
13         super.viewDidLoad()
14         // Do any additional setup after loading the view, typically from a nib.
15         
16         //初始化图像视图,并设置其位置在(20,120),尺寸为(280,200)。
17         self.imageView = UIImageView(frame: CGRect(x: 20, y: 120, width: 280, height: 200))
18         //然后将图像视图,添加到当前视图控制器的根视图。
19         self.view.addSubview(imageView)
20         
21         //创建一个按钮控件,并设置其位置在(20,60),尺寸为(280,40)
22         let button = UIButton(frame: CGRect(x: 20, y: 60, width: 280, height: 40))
23         //同时设置按钮在正常状态下的标题文字。
24         button.setTitle("Shot", for: .normal)
25         //然后给按钮绑定点击事件
26         button.addTarget(self, action: #selector(ViewController.pickImage), for: UIControl.Event.touchUpInside)
27         //设置按钮的背景颜色为深灰色
28         button.backgroundColor = UIColor.darkGray
29         
30         //同样将按钮,添加到当前视图控制器的根视图
31         self.view.addSubview(button)
32     }
33     
34      //添加一个方法,用来响应按钮的点击事件
35     @objc func pickImage()
36     {
37         //首先检测相机设备是否可以正常使用
38         if(UIImagePickerController.isSourceTypeAvailable(.camera))
39         {
40             //初始化图片拾取控制器对象
41             self.imagePickerController = UIImagePickerController()
42             //设置图片拾取控制器的代理对象,为当前的视图控制器
43             self.imagePickerController.delegate = self
44             //设置图片拾取控制器,是否允许用户移动、缩放和剪切图片
45             self.imagePickerController.allowsEditing = true
46             //设置图片拾取控制器的来源类型为相机设备
47             self.imagePickerController.sourceType = UIImagePickerController.SourceType.camera
48             //最后在当前视图控制器窗口,展示图片拾取控制器。
49             self.present(self.imagePickerController, animated: true, completion: nil)
50         } 
51     }
52     
53     //添加一个代理方法,用来响应完成图片拾取的事件
54     func imagePickerController(_ picker: UIImagePickerController, 
55          didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
56         //将用户选择的图片,赋予图像视图                          
57         self.imageView.image = info[UIImagePickerController.InfoKey.editedImage] as? UIImage
58         //然后取消图片拾取控制器的展示
59         self.dismiss(animated: true, completion: nil)
60     }
61 
62     //添加一个代理方法,用来响应用户取消图片拾取的事件
63     func imagePickerControllerDidCancel(_ picker: UIImagePickerController)
64     {
65         //当用户取消图片拾取时,隐藏图片拾取控制器
66         self.dismiss(animated: true, completion: nil)
67     }
68     
69     override func didReceiveMemoryWarning() {
70         super.didReceiveMemoryWarning()
71         // Dispose of any resources that can be recreated.
72     }
73 }

需要使用真实设备进行调试。

转载于:https://www.cnblogs.com/strengthen/p/10089144.html

相关文章:

  • Django学习笔记5
  • C语言程序设计 冒泡排序简介
  • css三大特性
  • 对Singleton的实现方法做一个总结
  • Linux 安装python3.4
  • BAT for 循环
  • 使用淘汰的二手设备构建CISCO实验环境
  • [转]使用批处理设置、启动和停止服务
  • spring aop原理和实现
  • 推荐一个比较好的软件下载网站
  • Linux中的会话与作业
  • Linux下的下载工具
  • cloud_config学习_2
  • 第11节 三个败家子(11)——女王与甄妃
  • Beta(1/7)
  • __proto__ 和 prototype的关系
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Apache Spark Streaming 使用实例
  • es的写入过程
  • Git学习与使用心得(1)—— 初始化
  • Laravel 中的一个后期静态绑定
  • TCP拥塞控制
  • Vultr 教程目录
  • Webpack 4 学习01(基础配置)
  • 笨办法学C 练习34:动态数组
  • 初识 webpack
  • 第2章 网络文档
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 七牛云假注销小指南
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 算法---两个栈实现一个队列
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 微信开源mars源码分析1—上层samples分析
  • 带你开发类似Pokemon Go的AR游戏
  • 选择阿里云数据库HBase版十大理由
  • (02)vite环境变量配置
  • (10)STL算法之搜索(二) 二分查找
  • (2)nginx 安装、启停
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (安卓)跳转应用市场APP详情页的方式
  • (二)c52学习之旅-简单了解单片机
  • (二)JAVA使用POI操作excel
  • (三)c52学习之旅-点亮LED灯
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (十三)Maven插件解析运行机制
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .sdf和.msp文件读取
  • ??eclipse的安装配置问题!??
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @FeignClient注解,fallback和fallbackFactory
  • [ 手记 ] 关于tomcat开机启动设置问题