作者:灬L龙灬_423 | 来源:互联网 | 2023-01-12 12:31
所以在iOS10中如果你想用UIActivityViewController共享一个图像,你只需要编写一些看起来像的swift3代码:
func shareTapped() {
if let image = imageView.image {
let vc = UIActivityViewController(activityItems: [image], applicationActivities: [])
vc.popoverPresentationController?.barButtOnItem= navigationItem.rightBarButtonItem
present(vc, animated: true, completion: nil)
}
如果您想将图像保存到相机胶卷(假设您已经要求相应的权限),或者想要通过信使,空投或任何其他Apple实现共享,则此方法似乎仍然有效.
不幸的是,如果您尝试通过Twitter,Facebook,Instagram等分享图像,他们将无法成功附加图像,并会抛出错误或无声地失败.
我花了很多时间搜索谷歌,youtube和stackoverflow,一切都指向iOS10解决方案,自iOS11发布以来什么都没有.
我应该注意,如果你想在这些行上传递字符串,url或其他东西,这个函数仍然可以正常工作.
1> Causaelity..:
短版/ TLDR
通过首先将图像转换为数据,然后将该对象传递给UIActivityViewController,可以在尝试传递图像时解决Twitter/Facebook问题:
if let jpgImage = UIImageJPEGRepresentation(image, 0.8) {
let vc = UIActivityViewController(activityItems: [jpgImage], applicationActivities: [])
}
可以在下面找到更长的外植和完整代码:
版本更长
我联系了一些专家,他们都暗示它应该正常工作,但即使在查看他们的示例应用程序时,他们都表现出同样的问题.所以我最终认为这可能是Twitter或Facebook的一个问题,因为共享到Apple工具正常工作.然后我开始玩照片应用程序,并决定点击那里的分享按钮,瞧,它与Twitter和Facebook合作!这让我想知道这是否意味着需要一些增量设置来实现它.在尝试了许多不同的事情后,我终于找到了一种有效的方法 通过PNG或JPG将图像转换为数据并将新对象传递给您的activityItems解决了Twitter/Facebook问题,并且似乎仍然适用于其他所有问题.将图像转换为JPG的更新后的swift4/ios11代码如下所示:
@objc func shareTapped() {
if let image = imageView.image {
if let jpgImage = UIImageJPEGRepresentation(image, 0.8) {
let vc = UIActivityViewController(activityItems: [jpgImage], applicationActivities: [])
// add the following line if using doing universal and need iPad
vc.popoverPresentationController?.barButtOnItem= navigationItem.rightBarButtonItem
present(vc, animated: true)
}
}
}
希望这可以帮助其他任何自iOS11以来一直在努力分享图像的人.