为什么较大的图像不会出现在共享扩展或操作扩展中?
Why do larger images not appear in a share extension, or action extension?
当我尝试创建共享扩展(或操作扩展)时
要写包含共享图片的电子邮件,为什么没有显示大图,只有小图?
因为在将图像数据提供给您的扩展程序之前可能会有延迟,您必须等待它到达,然后再提交包含它们的电子邮件撰写 window。 (否则不会出现)
我在 bitsToLoad 中保留一个计数器,我会为我请求的每条数据递增,并为我收到的每条数据递减
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeImage]) {
bitsToLoad ++;
__weak MFMailComposeViewController *pick = picker;
[itemProvider loadItemForTypeIdentifier:(NSString *)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];
现在只有在检查完所有附件并获取所有数据后才会显示视图控制器。
请注意,您可能会发现即使没有这种检查也会出现小图像(例如屏幕抓图),因为它们被足够快地传递给扩展程序,但如果没有这种检查,它肯定会破坏较大的图像,例如典型的 iPhone 张照片。
当我尝试创建共享扩展(或操作扩展)时 要写包含共享图片的电子邮件,为什么没有显示大图,只有小图?
因为在将图像数据提供给您的扩展程序之前可能会有延迟,您必须等待它到达,然后再提交包含它们的电子邮件撰写 window。 (否则不会出现)
我在 bitsToLoad 中保留一个计数器,我会为我请求的每条数据递增,并为我收到的每条数据递减
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeImage]) {
bitsToLoad ++;
__weak MFMailComposeViewController *pick = picker;
[itemProvider loadItemForTypeIdentifier:(NSString *)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];
现在只有在检查完所有附件并获取所有数据后才会显示视图控制器。
请注意,您可能会发现即使没有这种检查也会出现小图像(例如屏幕抓图),因为它们被足够快地传递给扩展程序,但如果没有这种检查,它肯定会破坏较大的图像,例如典型的 iPhone 张照片。