【问题标题】:How can I share a gif image using UIActivityViewController with Objective-C?如何使用 UIActivityViewController 和 Objective-C 共享 gif 图像?
【发布时间】:2016-06-04 17:24:10
【问题描述】:

我有一个应用程序可以让用户录制短视频并生成 gif 图像。现在我想让用户可以使用 UIActivityViewController 共享该 gif 图像,我已经这样做了:

UIImage *img = ...

NSArray *objectsToShare = @[img];

UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];

NSArray *excludeActivities = @[UIActivityTypePrint];

avc.excludedActivityTypes = excludeActivities;

[self presentViewController:avc animated:YES completion:nil];

问题在于它只共享一个静态 .jpg 图像(就像原始 .gif 图像的第一帧一样)。

另一方面,用户可以将 gif 图像保存到相机胶卷中,然后可以将其作为 .gif 文件共享。那么,除了使用自己的应用程序之外,我怎样才能做同样的事情呢?

提前致谢。

【问题讨论】:

    标签: objective-c xcode image gif uiactivityviewcontroller


    【解决方案1】:

    好的,我设法做到了,现在我可以通过电子邮件分享 gif 图像,但我觉得 Twitter 还有些事情要做。

    UIImage *img = ...;
    
    NSError *err;
    NSData *imgData = [imageSerialization animatedGIFDataWithImage:img error:&err];
    NSLog(@"%@", err);
    
    NSArray *objectsToShare = @[imgData];
    
    UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];
    
    NSArray *excludeActivities = @[UIActivityTypePrint, UIActivityTypeAssignToContact];
    
    avc.excludedActivityTypes = excludeActivities;
    
    [self presentViewController:avc animated:YES completion:nil];
    

    【讨论】:

    • 尝试将 NSData 包装在 UIActivityItemProvider 的自定义实现中并实现 dataTypeIdentifierForActivityType 以返回 kUTTypeGIF
    【解决方案2】:

    为 WhatsApp 分享 GIF 文件:

        NSURL *imageUrl =[self.ImageArray objectAtIndex:currentPhotoIndex];
        NSString *path=imageUrl.absoluteString;
        NSArray *strings = [path componentsSeparatedByString:@"/"];
        NSString *mygif=[strings objectAtIndex:strings.count-1];
    
        NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        NSString *dataPath = [documentsPath stringByAppendingPathComponent:@"/MrHRamani"];
    
        NSString *filePath = [dataPath stringByAppendingPathComponent:mygif];
    
        NSURL *urll=[NSURL fileURLWithPath:filePath];
        NSLog(@"imag %@",imageUrl);
        self.documentationInteractionController.delegate = self;
        self.documentationInteractionController.UTI = @"net.whatsapp.image";
        self.documentationInteractionController = [self setupControllerWithURL:urll usingDelegate:self];
        [self.documentationInteractionController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多