1.图片截取 func test(addView:UIView) -> UIImage?{ UIGraphicsBeginImageContextWithOptions(CGSize(width: JY_DEVICE_WIDTH, height: addView.height), false, UIScreen.main.scale) if let context = UIGraphicsGetCurrentContext() { addView.layer.render(in: context) let imamge = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return imamge } return nil }
2.保存相册 方法1:直接保存, 但是没办法做提示操作或错误监听 if let img = image{ UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil) } 方法2:可监听系统方法 if let img = self.test(addView: tempView){ UIImageWriteToSavedPhotosAlbum(img, self,#selector(image(image:didFinishSavingWithError:contextInfo:)), nil) } //图片保存到本地 @objc func image(image:UIImage,didFinishSavingWithError error:NSError?,contextInfo:AnyObject) { if error != nil { print("--\(image)---","++++\(String(describing: error))++++") return }else{ view.showSuccessInfo(info: "图片保存成功") } }
3. 保存的时候
(1)必须 重新创建一个临时tempView, 加到当前VC上,然后获取图片,保存到相册,
(2)如果直接用VC的原来的self.view或者SV啥的, 没效果,不知道是啥问题
(3)移除顺序, 先加到原来view上,在移除tempview let tempView = UIView() tempView.bounds = CGRect(x: 0, y: 0, width: JY_DEVICE_WIDTH, height: scroller.contentSize.height) view.addSubview(tempView) configScroller(addView: tempView) if let img = self.test(addView: tempView){ UIImageWriteToSavedPhotosAlbum(img, self, #selector(image(image:didFinishSavingWithError:contextInfo:)), nil) }else{ view.showTipsInfo(tips: "图片不存在") } //先添加到SV上在u移除, 不然子控件位置会 异常 configScroller(addView: scroller) tempView.removeFromSuperview()