码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发——实用篇Swift篇&保存图片到相册

时间:2015-07-22 20:50:11      阅读:334      评论:0      收藏:0      [点我收藏+]

标签:

保存图片到相册

最近在深入的学习关于swift相关技术,虽然海做不出什么好的东西,但是感觉收获不少,相信总有一样能用到,所以就总结了一下,希望大家喜欢!

1.OC中的写法

在OC中,我们需要保存图片到相册需要调用这个方法:

 1 void UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo); 

想来大家也都看过这个方法的头文件,在头文件中有这样一段话

   1 - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo; 

意思是:想要将一张照片保存到相册中,这个可选的完成方法需要按照下面那个方法的格式来定义。 
所以,我们在OC中通常都是直接将这个方法拷贝出来,直接实现这个方法,举个栗子:

 1 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
 2 
 3     UIImageWriteToSavedPhotosAlbum(self.iconView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
 4 
 5 }
 6 - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
 7 
 8     if (error) {
 9         NSLog(@"保存出错");
10         return;
11     }
12 
13     NSLog(@"保存成功");
14 }

 

在上面这个栗子中,我通过手指触摸事件,将事先定义好的iconView中的图像保存到相册中。

而同样一个栗子,在Swift中应该怎么样实现呢?

2.swift中的写法

 1 override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
 2 
 3     UIImageWriteToSavedPhotosAlbum(iconView.image, self, "image:didFinishSavingWithError:contextInfo:", nil)
 4 
 5 }
 6 
 7     func image(image: UIImage, didFinishSavingWithError: NSError?, contextInfo: AnyObject) {
 8     println("---")
 9 
10     if didFinishSavingWithError != nil {
11         println("错误")
12         return
13     }
14     println("OK")
15 }

 

同样的栗子,swift中的实现如上,在swift中,我们跳到头文件会发现是这样的,
 1 - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo; 

还是OC中那一套,苹果并没有帮我们写好swift下的代码格式应该怎么写,所以很多人对此应该怎么使用会产生许多的疑惑,其实,就是像上面那样,将参数一一对应,以swift中函数的写法写出来就可以了。 

另外补充一点小知识点: 
上面的那个方法我们还可以这么写,

 1   // 提示:参数 空格 参数别名: 类型
 2 func image(image: UIImage, didFinishSavingWithError error: NSError?, contextInfo: AnyObject) {
 3     println("---")
 4 
 5 //        if didFinishSavingWithError != nil {
 6     if error != nil {
 7         println("错误")
 8         return
 9     }
10     println("OK")
11 }

 

类似这样的格式:(参数 参数别名: 类型)didFinishSavingWithError error: NSError? 
在外部调用时,显示的是didFinishSavingWithError这个参数名 
而在内部使用时,显示的是error这个参数别名,方便我们的使用,也更加类似OC中的写法。

iOS开发——实用篇Swift篇&保存图片到相册

标签:

原文地址:http://www.cnblogs.com/iCocos/p/4668335.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!