【发布时间】:2021-04-29 09:17:07
【问题描述】:
我有一个图像视图图像。我正在打开 Giphy SDK 底页以在我已经添加的图像上添加 gif。
我使用此代码创建 gif 视图以添加已添加的图像:
private func createGifView(url: String?) {
let x = CGFloat.random(in: 0...(parentView.frame.width - 80))
let y = CGFloat.random(in: 0...(parentView.frame.height - 80))
let imageView = SDAnimatedImageView(frame: CGRect(x: x, y: y, width: 120, height: 120))
imageView.isUserInteractionEnabled = true
if let url = url {
imageView.sd_setImage(with: URL(string: url), completed: nil)
}
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(emojiDidMove))
let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(emojiDidPinch))
let rotationGesture = UIRotationGestureRecognizer(target: self, action: #selector(emojiDidRotate))
panGesture.delegate = self
pinchGesture.delegate = self
rotationGesture.delegate = self
imageView.addGestureRecognizer(panGesture)
imageView.addGestureRecognizer(pinchGesture)
imageView.addGestureRecognizer(rotationGesture)
parentView.addSubview(imageView)
guard let rightBarButtonItems = navigationItem.rightBarButtonItems else { return }
rightBarButtonItems[1].isEnabled = true
}
我尝试使用此代码将添加的 gif 图像保存到相机胶卷:
private func saveEmojiAddedImage() -> UIImage {
UIGraphicsBeginImageContext(parentView.frame.size)
parentView.layer.render(in: UIGraphicsGetCurrentContext()!)
guard let image = UIGraphicsGetImageFromCurrentImageContext() else { return UIImage(named: "smile")! }
let imageView = SDAnimatedImageView()
let animatedImage = SDAnimatedImage(named: "image.gif")
imageView.image = animatedImage
imageView.image = image
let imageData = imageView.image?.sd_imageData(as: .GIF)
if let data = imageData {
PHPhotoLibrary.shared().performChanges({
PHAssetCreationRequest.forAsset().addResource(with: .photo, data: data, options: nil)
}) { success, error in
guard success else {
print("failed to save gif \(error?.localizedDescription)")
return
}
print("successfully saved gif")
}
}
UIGraphicsEndImageContext()
let activityViewController:UIActivityViewController = UIActivityViewController(activityItems: [image], applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view
self.present(activityViewController, animated: true, completion: nil)
return image
}
我正在使用这个函数获取 giphy gif:
extension MainViewController: GiphyDelegate {
func didSelectMedia(giphyViewController: GiphyViewController, media: GPHMedia) {
let url = media.url(rendition: .fixedWidth, fileType: .gif)
createGifView(url: url)
}
}
【问题讨论】:
-
是保存为图片还是有什么问题?
-
它正在保存为图像。我想保存像 instagram 故事 gif 添加的图像。例如,如果您将图像添加到您的故事中,并且您可以在图像上添加 gif,您可以将此 gif 添加的图像保存到您的相机胶卷中。一张静态图片和静态图片上的动态 gif 动画
-
image.gif是本地的吗?或者您是从 GIPHY 选择.gif吗?如果是这样,您能否说明您是如何获取 gif 的? -
我正在从 GIPHY 中选择一个 .gif。我编辑了我的代码以显示我如何获取我的 gif。
-
我不确定您要问的问题是什么?出乎意料的会发生什么?
标签: swift gif sdwebimage