与 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或隔空投送分享)的应用分享窗口

LDAP 与 MYSQL .. JA-SIG CAS 与 LDAP 与 CAS 与 MySQL

python网络编程基础(线程与进程并行与并发同步与异步)

=与==&与&&| 与 || 的区别