• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 为什么更大的图像不会出现在共享扩展或操作扩展中?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 10:40:29 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

当我尝试创建共享扩展(或操作扩展)时 要写包含共享图像的电子邮件,为什么不显示较大的图像,只显示小图像?



Best Answer-推荐答案


由于图像数据提供给您的扩展程序之前可能会有延迟,因此您必须等待它到达,然后才能显示包含它们的电子邮件撰写窗口。 (否则不会出现)

我在 bitsToLoad 中保留了一个计数器,我会为我请求的每条数据递增,并为我收到的每条数据递减

if ([itemProvider hasItemConformingToTypeIdentifierNSString *)kUTTypeImage]) {
                        bitsToLoad ++;
                        __weak MFMailComposeViewController *pick = picker;
                        [itemProvider loadItemForTypeIdentifierNSString *)kUTTypeImage options:nil completionHandler:^(UIImage *image, NSError *error) {
                            if (image) {
                                [pick addAttachmentData:UIImageJPEGRepresentation(image,0.8) mimeType"image/jpeg" fileName"image.jpg"];  
                            }
                            [self dataFetched];
                        }];

在我出示电子邮件表格之前,请检查他们是否都已到达。

-(void) dataFetched {
    bitsToLoad--;
    if (bitsToLoad==0) {
        [self presentViewController:picker animated:YES completion:^(){ }];
    }
}

但这还不够。

为了确保在考虑所有附件之前不会出现电子邮件界面,并且即使没有图像也会在最后显示,我在扫描例程开始时将 bitsToLoad 设置为 1...

NSInteger bitsToLoad=1 

并在最后减少并检查它。

[self dataFetched];

现在 View Controller 只有在检查了所有附件并获取所有数据后才会显示。

请注意,即使没有这种检查,您也可能会发现小图像(例如屏幕截图)会出现,因为它们足够快地传递给扩展程序,但如果没有这种检查,它肯定会破坏较大的图像,例如典型的 iPhone照片。

关于ios - 为什么更大的图像不会出现在共享扩展或操作扩展中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32456738/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap