与 UIActivityViewController 共享图像在 iOS 8 中为空白/损坏
Posted
技术标签:
【中文标题】与 UIActivityViewController 共享图像在 iOS 8 中为空白/损坏【英文标题】:Sharing image with UIActivityViewController is blank/corrupt in iOS 8 【发布时间】:2014-09-23 18:57:57 【问题描述】:看来我只是在 ios 8 中遇到了这个错误。我正在尝试与 UIActivityViewController
共享一张图片和一些文字给自己进行测试。有时,共享图像会导致应该是共享图像的问号,并且点击它不会在 iMessage 线程中执行任何操作,因为它是空白或损坏的。如果我返回我的应用并再次尝试共享,有时图像会完美共享并且不是空白的。
我正在使用的代码(在 iOS 7 中完美运行):
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:@[[NSString stringWithFormat:@"Sent from http://appstore.com/appname"],[UIImage imageNamed:@"SomeImage"]]applicationActivities:nil];
activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeSaveToCameraRoll, UIActivityTypeAddToReadingList, UIActivityTypePostToVimeo, UIActivityTypeAirDrop];
[self presentViewController:activityVC animated:YES completion:NULL];
我试图弄清楚为什么有时会发生这种情况,以及如何解决它。我会很感激任何帮助。附上问题/错误的截图:
【问题讨论】:
在应用程序的另一个地方 [UIImage imageNamed:@"SomeImage"] 有效吗? 在需要时工作得很好。并且 100% 在 iOS 7 中。让我认为这是他们的远程视图控制器的 Apple 错误。自 iOS 8 以来,通过电子邮件通过UIActivityViewController
共享有时也会超时。
大家找到解决方案了吗?我们看到相同的间歇性损坏图像,但我们使用的是邮件共享。
@CargoMeister 我没有找到解决方案,这很糟糕。此问题仅在 iOS 8 上开始。
【参考方案1】:
这是视频文件共享的解决方法。也许您可以尝试对图像进行相同的处理。
我首先将视频数据保存到文档目录中的文件中,然后附加该文件。
//write to a file
[videoData writeToFile:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/image.mov"] atomically:YES];
(IBAction)ShareVideoWihFacebook:(id)sender
//get the file url NSString* path =[NSHomeDirectory()stringByAppendingPathComponent:@"Documents/image.mov"];
NSURL *videoURL = [NSURL fileURLWithPath:path];
UIActivityViewController * activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[videoURL,@"Created by ..."] applicationActivities:NULL];
[activityVC setExcludedActivityTypes:@[ UIActivityTypeMail,UIActivityTypeAssignToContact, UIActivityTypeCopyToPasteboard, UIActivityTypePrint, UIActivityTypePostToWeibo,UIActivityTypeMessage,UIActivityTypeAirDrop,UIActivityTypeSaveToCameraRoll]];
[activityVC setValue:@"My Video" forKey:@"subject"];
[activityVC setCompletionHandler:^(NSString *activityType, BOOL completed)
//NSLog(@"completed dialog - activity: %@ - finished flag: %d", activityType, completed);
];
[self presentViewController:activityVC animated:TRUE completion:nil];
【讨论】:
【参考方案2】:我知道这是一个古老的威胁,但我最近遇到了同样的情况。
首先,将您要共享的文件保存到临时文件中。目录,然后您想通过使用url.absoluteUrl
共享网址。做absoluteUrl似乎很重要。
【讨论】:
以上是关于与 UIActivityViewController 共享图像在 iOS 8 中为空白/损坏的主要内容,如果未能解决你的问题,请参考以下文章
iOS 8.3:UIActivityViewController 显示无关的行
SwiftUI完美弹出UIActivityViewController(通过微信QQ或隔空投送分享)的应用分享窗口
SwiftUI完美弹出UIActivityViewController(通过微信QQ或隔空投送分享)的应用分享窗口