高级UIKit-06(UIImagePickerController)
【day07-1-getSystemImage】:获取系统相册
UIImagePickerController图片采集控制器
picker采集者,采摘者
该方法继承自:UINavigationController
该方法的简单使用:
1.创建该控制器,alloc init
2.present到这个控制器,会提示加载系统图片,加载完后默认按:
UIImagePickerControllerSourceTypePhotoLibrary样式显示。
有一个属性可以改变样式:sourceType
进入编辑模式:
首先打开编辑模式:allowsEditing设置为YES。
打开编辑模式时为了可以保存编辑,需要实现UIImagePickerControllerDelegate代理的一个方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;
这个方法可以通过info字典可以获取到图片的详细信息进行图片的操作。
在编辑模式下取消返回的话需要实现代理中的另一个方法:
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
在该方法里dismiss回去。
注意一定要设置图片采集控制器的delegate。
如果在打开编辑模式下,点击图片会跳转到编辑图片界面,点击保存时调用imagePickerController方法,在关闭编辑模式下,点击图片就会调用imagePickerController方法。
在进入图片采集控制器时还会调用UINavigationControllerDelegate的两个方法,
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
该方法是在即将显示图片采集控制器的界面时调用。
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
该方法是在图片采集控制器的界面显示后调用。
可以在这两个方法中通过viewController对当前界面进行操作。
总结:
删除图片达到后边图片往前挪的实现:
1.先把图片从数组中删掉
2.然后清空scrollview
3.最后重新从新的数组中加载图片到scrollView中
一个view只要从一个坐标系到另一个坐标系就需要进行转换。
CGRect newRect = [self.imagesScrollViewconvertRect:imageView.frametoView:self.view];
imageview上添加按钮,只有用户交互打开了这个按钮才可以点。
让view放在最底下的方法是insertSubview:atIndex:0
[self.editImageViewinsertSubview:self.editViewBackGroundIVatIndex:0]; // 把背景图片放在shuViews数组中的第0个位置,其效果也就是在最底下
使subview处于最前面
// 把点击的图片放在最前面
-(void)tapAction:(UITapGestureRecognizer *)tap{
[self.editImageView bringSubviewToFront:tap.view]; // 使subview处于最前面
}
在放大缩小时,注意将scale属性设为1
在旋转图片时,注意将rotation属性设为0
保存view中的图片到系统相册中
// 从view中取出UIImage保存到相册中
- (IBAction)saveImageButton:(id)sender {
// 创建画布
UIGraphicsBeginImageContext(self.editImageView.bounds.size);
// 把内容渲染到画布
[self.editImageView.layer renderInContext:UIGraphicsGetCurrentContext()];
// 取出画布中的图片
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
// 结束
UIGraphicsEndImageContext();
// 保存到系统相册中
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), Nil);
}
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"保存成功" delegate:Nil cancelButtonTitle:@"确定" otherButtonTitles:Nil, nil];
[alert show];
}
【day07-2-dragImage】:拖动图片到新的位置
常犯错误:忘记初始化数组
ios中remove references和move to trash的区别?remove references 只是删除引用 工程文件夹里面还是有这个文件的 move to trash 把文件从工程文件夹里扔进垃圾箱里了 .
高级UIKit-06(UIImagePickerController)的更多相关文章
- Linux高级编程--06.进程概述
进程控制块 在Linux中,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,它通常包含如下信息: 进程id.系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非 ...
- Java入门 - 高级教程 - 06.邮件收发
原文地址:http://www.work100.net/training/java-email.html 更多教程:光束云 - 免费课程 邮件收发 序号 文内章节 视频 1 概述 2 发送一封简单的邮 ...
- JAVA EE企业级开发四步走完全攻略 [转]
http://bbs.51cto.com/thread-550558-1.html 本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划, ...
- Swift - 给表格添加编辑功能(删除,插入)
1,下面的样例是给表格UITableView添加编辑功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,第一个分组处于删除状态,第二个分组处于插入状态 (3)点击删除图标,删 ...
- Swift - 给表格的单元格UITableViewCell添加图片,详细文本标签
表格UITableView中,每一单元格都是一个UITableViewCell.其支持简单的自定义,比如在单元格的内部,添加图片和详细文本标签. 注意UITableViewCell的style: (1 ...
- Swift - 使用表格组件(UITableView)实现分组列表
1,样例说明: (1)列表以分组的形式展示 (2)同时还自定义分区的头部和尾部 (3)点击列表项会弹出消息框显示该项信息. 2,效果图: 3,代码如下: 1 2 3 4 5 6 7 8 9 ...
- 利用UIImagePickerController或者利用UIKit的 UIGraphicsBeginImageContext保存图片
转载自:http://my.oschina.net/hmj/blog/99970 应用中有时我们会有保存图片的需求,如利用UIImagePickerController用IOS设备内置的相机拍照 ...
- 数据分析06 /pandas高级操作相关案例:人口案例分析、2012美国大选献金项目数据分析
数据分析06 /pandas高级操作相关案例:人口案例分析.2012美国大选献金项目数据分析 目录 数据分析06 /pandas高级操作相关案例:人口案例分析.2012美国大选献金项目数据分析 1. ...
- 读书笔记(06) - 语法基础 - JavaScript高级程序设计
写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了. 答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章. 对此,笔者换了随 ...
随机推荐
- Android项目导入时,出现的Could not write file 。。。。。。.classpath错误解决办法
导入到Eclipse中后选择了相应的API后,红叉的项目错误没有了. 工程列表也无任何错误了.但出现了这样的提示框错误 说明的是.classpath这个环境文件不能写.随后,查看工程文件主目录下的.c ...
- HttpModule、HttpHandler和Page的生命周期
1.引言 2.两个处理步骤 2.1.创建ASP.NET环境 2.2.用触发的MHPM事件处理请求 3.什么事件中应该做什么 4.示例代码 5.深入ASP.NET页面事件 1.引言 这篇文章我们将试图理 ...
- 用python快速搭建WEB服务器
cmd下进入你要搞WEB项目的目录 输入↓方代码 python -m SimpleHTTPServer 端口号# 默认是8000 这样就启动了一个简单的WEB服务器
- if和switch的区别,循环的for 和while的区别, 字符串常用的7种方法
相同点: 都是用于多重选择 不同点: 多重IF没有switch选择结构的限制,特别适合变量处于某个连续区间的情况 switch只能处理等值条件判断的情况,而且条件必须是整型变量或者字符串变量 字符串的 ...
- judge loop in undirected graph
一 深度优先遍历,参考前面DFS(white and gray and black) 二 根据定点以及边数目进行判断 如果m(edge)大于n(vertex),那么肯定存在环 算法如下: 1 删除所有 ...
- shell学习之用户管理和文件属性
1.组和用户的添加 添加组: groupadd [-g gid [-o]] [-r] [-f] group 示例: groupadd -g testgoup1 #添加组testgroup1,同时指定g ...
- 数据切分——Mysql分区表的管理与维护
关于Mysql分区表的介绍可以参考: http://blog.csdn.net/jhq0113/article/details/44592865 关于Mysql分区表的创建可以参考: http://b ...
- cmake学习笔记(五)
在cmake 学习笔记(三) 中简单学习了 find_package 的 model 模式,在cmake 学习笔记(四)中了解一个CMakeCache相关的东西.但靠这些知识还是不能看懂PySide使 ...
- pragma comment
pragma指令简介 在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作. 下面介绍了一下该指令的一些常用参数,希望对大家有所帮助! 一. mess ...
- Android Paint、Canvas、Matrix使用讲解(一、Paint)
http://blog.csdn.net/tianjian4592/article/details/44336949 好了,前面主要讲了Animation,Animator 的使用,以及桌面火箭效果和 ...