- 扯淡
差不多有一年没有写iOS代码了,iOS迎来了诸多变化,首先swift升级到了swift5.0、iOS13系统发布、iPad OS与iOS不再是同一个系统(但是差别不大)和深色模式等等。这一年中接触了一些新东西,如微信小程序、flutter、dart、HTML、uni-app等。大家感兴趣的可以了解了解,flutter越来越火了,现在国内也有不少人在用uni-app进行跨端开发; - 问题
最近在做一个Swift项目时遇到这样一个问题,项目需要用户上传头像,头像选择时没有什么问题,但用户头像基本都是圆形或是带有圆角的正方形。 那么问题来了,我们中相册中得到的图片是原图或者是压缩后的图,图的本身比例没有变化,在图片填充的时候会发现图片变形,或是上传头像到服务器时头像过大给服务器代理不必要的开销。就想在网上找一个别人写好的图片裁剪工具,但始终会报错,主要是swift5.0的改变带来的。所以我自己造一个,但是时间好像来不及,最后决定把现在项目中用的别人的这份裁剪代码改改。最后功夫不负有心人,附上代码地址
使用
extension ViewController : UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
picker.dismiss(animated: false, completion: nil)
let image = info[.originalImage] as! UIImage
let cropperImage = RImageCropperViewController.init(originalImage: image, cropFrame: CGRect.init(x: (kScreenWidth - 300)/2, y: (kScreenHeight - 300)/2, width: 300, height: 300), limitScaleRatio: 30)
cropperImage.delegate = self
navigationController?.pushViewController(cropperImage, animated: true)
}
}
代码实现都比较简单,可以直接把文件RImageCropperViewController.swift和RDevice.swift复制到你的项目中就可以使用了。 至于RImageCropperViewController.swift 中的实现感兴趣的朋友可以看看,先就写到这里,后面在完善