环境: XCode5, single view application template
打开相册或照相机需要实现协议UIImagePickerControllerDelegate与UINavigationControllerDelegate,email图片需要实现协议MFMailComposeViewControllerDelegate,在头文件中需要导入#import <MessageUI/MessageUI.h>
整个UI界面如下:
知识点:
1 及
协议的使用
1.1 先初始化
1.2 设置sourceType ,这取决于你想要take a photo还是camera capture
设置sourceType为Camera,既用Camera获取一张图片
设置sourceType为Photos library,联系ipController与photos library controller
同一时间,两者只能二者选一。
1.3 设置的的delegate为self
在这里设置UIImagePickerController 的 delegate为当前的view controller,需要在当前view controller实现方法:
这个方法在选择了一张图片之后会自动调用,通常对获得的图片进行处理,如保存等
1.4 设置呈现新的View controller(打开相册或camera)时的animation
设置过渡时的animation
总共有四种style可以设置,设置不同的值代表不同的style,默认
设置新的view 在呈现以后是什么样的,比如全屏呈现或是其他,这里设置为全屏
还可以设定为:
1.5 设置需要呈现的view controller为ipController
根据ipController的source type不同,将打开camera或photos library
1.6 当选择获取完图片之后,将会回到当前的delegate view controller调用方法:
在这里主要对图片保存到当前view controller的一个属性中,
然后用过渡到下一个view controller,其中[self.storyboard instantiateViewControllerWithIdentifier:@\”ImageViewVController\”]实例化identifier为ImageViewVController的viewcontroller
note : 某些设备可能没有camera,可以用isSourceTypeAvailable方法:来检测camera是否可用,如不可用可以默认打开
photos library,这一切在viewDidAppear中完成
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
if(!self.startUp){
//check camera 是否可用, 不可用则打开Photos library
if(![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){
[self doBtnPhotosLibrary:nil];
self.startUp = YES;
}
}
}
2 及的使用
需要在头文件中先导入,实现协议:
2.1 初始化
2.2 设置delegate为current view controller
2.3 从view controller里面获取图片,并把获取的图片以附件的形式添加到mail controller中
从photos library或camera所获取的图片会被显示在
中,在上面显示的scene所对应的view controller中,用获取保存image的view controller,设置image view所显示的图片源具体实现:
隐藏其他的view
要从上面的场景中获取UIImageView所显示的图片,可以先隐藏除UIImageView中的其他view,得到图片以后在取消隐藏用下面的方法隐藏其他的view
获取图片:
用来得到当前view的边界.
调用用前面得到的屏幕边界创建一个位图的context,并设置该context为当前的context调用来获取当前的context,调用设置context的背景颜色调用在该context下给定的mainRect画一个区域调用来把self.view的layer放到指定的context中调用来从这个context中得到图片这个与相对应,移除刚才创建的context
刚刚获取的图片newImage1就是想要email的图片
通常email的图片不能太大,所以需要对其做一些处理,下面用一个函数来对所取得的图片进行处理,改变他的大小
主要用给的newSzie来创建一个context并设置为当前的context,然后用所给的image来在当前的context上重新画一个与newSize大小相同的image,然后得到该contex的图片,用这张图片返回
取消隐藏的view
把得到的图片转化为NSData对象
也可以调用UIImageJPEGRepresentation转换为JPEG格式的数据
添加NSData对象到main controller中
指定图片data的格式,图片的name
2.4 转换到mail controller
2.5 当用户发送完邮件或取消发送之后会调用下面的方法
这里简单的dismiss 该mail controller
- 点赞
- 收藏
- 分享
- 文章举报
TianLing909发布了3 篇原创文章 · 获赞 0 · 访问量 2402私信关注