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

保存图片到相册

最近在深入的学习关于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中的写法。

时间: 2024-10-12 12:40:57

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

ios开发——实用技术篇Swift篇&amp;地址薄、短信、邮件

1 //返回按钮事件 2 @IBAction func backButtonClick() 3 { 4 self.navigationController?.popViewControllerAnimated(true) 5 } 6 7 //新增联系人 8 @IBAction func addPeople () 9 { 10 //取得电话薄句柄 11 var error:Unmanaged<CFError>? 12 var addressBook: ABAddressBookRef? = AB

ios开发——实用技术篇Swift篇&amp;播放MP3

播放MP3 1 // MARK: - 播放MP3 2 /*----- mp3 ------*/ 3 //定时器- 4 func updateTime() 5 { 6 //获取音频播放器播放的进度,单位秒 7 var cuTime:Float = Float(audioPlayer.currentTime) 8 9 //更新进度条 10 jinDuSlider.value = cuTime 11 12 //获取总时间 13 var duTime:Float = Float(audioPlayer.

ios开发——实用技术篇Swift篇&amp;多点触摸与手势识别

多点触摸与手势识别 1 2 //点击事件 3 var atap = UITapGestureRecognizer(target: self, action: "tapDo:") 4 self.view.addGestureRecognizer(atap) 5 atap.numberOfTapsRequired = 1 //单击次数 6 atap.numberOfTouchesRequired = 1 //手指个数 7 8 //拖动事件 9 var aPan = UIPanGesture

ios开发——实用技术篇Swift篇&amp;系统声音

系统声音 1 // MARK: - 系统声音 2 /*----- 系统声音 ------*/ 3 @IBAction func systemSound() 4 { 5 //建立的SystemSoundID对象 6 var soundID: SystemSoundID = 0 7 8 //获取声音文件地址 9 var path = NSBundle.mainBundle().pathForResource("SaoMa", ofType: "wav") 10 11 /

ios开发——实用技术篇Swift篇&amp;录音

录音 1 // MARK: - 录音 2 /*----- 录音 ------*/ 3 4 var recorder:AVAudioRecorder? //录音器 5 var player:AVAudioPlayer? //播放器 6 var recorderSettingsDic:[NSObject : AnyObject]? //录音器设置参数数组 7 var volumeTimer:NSTimer!//定时器线程, 刷新音量 8 var aacPath:String? //录音存储路径 9

ios开发——实用技术篇Swift篇&amp;照片选择

照片选择 1 // MARK: - 选择照片 2 /*----- 选择照片 ------*/ 3 @IBAction func addImageButtonClick() 4 { 5 let actionSheet = UIActionSheet(title: "请选择", delegate: self, cancelButtonTitle: "取消", destructiveButtonTitle: nil, otherButtonTitles: "从相

ios开发——实用技术篇Swift篇&amp;加速计和陀螺仪

加速计和陀螺仪 1 //返回按钮事件 2 @IBAction func backButtonClick() 3 { 4 self.navigationController?.popViewControllerAnimated(true) 5 } 6 7 8 @IBOutlet var xLabel:UILabel! 9 @IBOutlet var yLabel:UILabel! 10 @IBOutlet var zLabel:UILabel! 11 12 @IBOutlet var orient

ios开发——实用技术篇Swift篇&amp;视频

视频 1 // MARK: - 播放视频 2 /*----- 播放视频 ------*/ 3 4 5 func moviePlayerPreloadFinish(notification:NSNotification) 6 { 7 println("播放完毕") 8 } 9 10 //声明一个媒体播放器 11 var moviePlayer:MPMoviePlayerController? 12 13 @IBAction func playMV() 14 { 15 let filePa

ios开发——实用技术篇Swift篇&amp;拍照

拍照 1 // MARK: - 拍照 2 func fromPhotograph() 3 { 4 if UIImagePickerController.isSourceTypeAvailable(.Camera) 5 { 6 //创建图片控制器 7 let picker = UIImagePickerController() 8 9 //设置代理 10 picker.delegate = self 11 12 //设置来源 13 picker.sourceType = UIImagePicker

iOS开发——技术精华Swift篇&amp;Swift 2.0和Objective-C2.0混编之第三方框架的使用

Swift 2.0和Objective-C2.0混编之第三方框架的使用 swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引入了多种新功能,使得编程工作更加简便,灵活! 2015年6月9日苹果又一次给所有开发之者带来了一个惊喜,那就是今年年底swift讲开源,者队iOS开发着来说无疑是一个值得兴奋的消息,可是就在这短短的几个月里面swift吸引了越来