美文网首页
在Swift中保存图片到相册

在Swift中保存图片到相册

作者: GoGooGooo | 来源:发表于2016-01-06 00:10 被阅读1057次

    1.OC中的写法

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

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

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

    // Adds a photo to the saved photos album.  The optional completionSelector should have the form:
    //  - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;
    

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

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    
        UIImageWriteToSavedPhotosAlbum(self.iconView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
    
    }
    - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
    
        if (error) {
            NSLog(@"保存出错");
            return;
        }
        NSLog(@"保存成功");
    }
    

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

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

    2.swift中的写法

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        UIImageWriteToSavedPhotosAlbum(iconView.image, self, "image:didFinishSavingWithError:contextInfo:", nil)
    }
    
    func image(image: UIImage, didFinishSavingWithError: NSError?, contextInfo: AnyObject) {
        println("---")
    
        if didFinishSavingWithError != nil {
            println("错误")
            return
        }
        println("OK")
    }
    

    同样的栗子,swift中的实现如上,在swift中,我们跳到头文件会发现是这样的,

    // Adds a photo to the saved photos album.  The optional completionSelector should have the form:
    //  - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;
    

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

    // 提示:参数 空格 参数别名: 类型
    func image(image: UIImage, didFinishSavingWithError error: NSError?, contextInfo: AnyObject) {
        println("---")
    
    // if didFinishSavingWithError != nil {
        if error != nil {
            println("错误")
            return
        }
        println("OK")
    }
    

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

    相关文章

      网友评论

          本文标题:在Swift中保存图片到相册

          本文链接:https://www.haomeiwen.com/subject/lhazhttx.html