Swift从相册选择图片,图文混排并且可以保存、上传数据

这篇博客介绍了如何在Swift中实现从相册选择图片,利用UITextView进行图文混排,以及使用NSAttributedString保存和读取富文本数据。文章详细阐述了每个步骤,包括UIImagePickerController的使用、图片的缩放处理,以及通过NSKeyedArchiver进行数据编码和解码。博主分享了遇到的问题和解决方法,提供了完整的代码示例。
摘要由CSDN通过智能技术生成

博主最近突发奇想想做一个自己的日记本App,在过程中遇到了一些坑,摸索了很久才做出一个简单的日记本功能。

先来看看一下效果吧:
这里写图片描述

先来说说这次用到的一些东西吧:
1、UIImagePickerController:用来获取Photos里面的照片
2、UITexeView:用来做图文混排
3、NSKeyedArchiver和NSKeyedUnarchiver:保存和读取数据
具体的一些细节在过程中讲解。

从照片选择图片

首先,我们要实现从用户的Photos(照片)这个应用中读取用户的照片。最简单的方法就是用UIImagePickerController,要使用它,需要类遵循UIImagePickerControllerDelegate和UINavigationControllerDelegate这两个协议。
在做图片选择功能时,博主将其封装为三个函数(其中两个是协议中的函数)
第一个函数如下:

/// 选择图片
    @objc func pickImage() {
        self.imagePickerController = UIImagePickerController()
        //设置代理
        self.imagePickerController.delegate = self
        //允许用户对选择的图片或影片进行编辑
        self.imagePickerController.allowsEditing = true
        //设置image picker的用户界面
        self.imagePickerController.sourceType = .photoLibrary
        //设置图片选择控制器导航栏的背景颜色
        self.imagePickerController.navigationBar.barTintColor = UIColor.orange
        //设置图片选择控制器导航栏的标题颜色
        self.imagePickerController.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
        //设置图片选择控制器导航栏中按钮的文字颜色
        self.imagePickerController.navigationBar.tintColor = UIColor.white
        //显示图片选择控制器
        self.present(self.imagePickerController, animated: true, completion: nil)
    }

这个函数中的东西都很简单,需要说的就只有一个那就是设置imagePickerController的sourceType,它的类型是UIImagePickerControllerSourceType的枚举,其中三个变量分别为photoLibrary(照片库)、camera(相机)、savedPhotosAlbum(保存的相册)。设置sourceType就是设置图片的来源,常用的为前两个。
然后就是两个协议中的方法了,一个是你选择了对应的图片

/// 图片选择完成
    ///
    /// - Parameters:
    ///   - picker: 图片选择控制器
    ///   - info: 图片信息
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
//        print("media type: \(String(describing: info["UIImagePickerControllerMediaType"]))")
//        print("crop rect: \(String(describing: info["UIImagePickerControllerCropRect"]))")
//        print("reference url: \(String(describing: info["UIImagePickerControllerReferenceURL"]))")
        //获取选择到的图片
        let image = info["UIImagePickerControllerEditedImage"] as?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值