2015-09-08 1 views
2

Когда я пытаюсь создать расширение общего доступа (или расширение действия) для записи электронной почты, содержащей общие изображения, почему большие изображения не отображаются, только маленькие?Почему большие изображения не отображаются в расширении общего доступа или расширении действия?

ответ

1

Поскольку может произойти задержка до того, как данные изображения будут предоставлены вашему внутреннему номеру, вы должны дождаться, пока он появится, прежде чем представить окно для составления электронной почты, включая их. (В противном случае они не появляются)

Я держу счетчик в 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:^(){ }]; 
    } 
} 

Но этого недостаточно.

Чтобы убедиться, что интерфейс электронной почты не отображается до тех пор, пока все вложения не будут рассмотрены, И что он будет представлен в конце, даже если изображений не было, я устанавливаю битToLoad в 1 в начале процедуры сканирования. .

NSInteger bitsToLoad=1 

и декремент и проверьте его в конце.

[self dataFetched]; 

Теперь контроллер вид будет представлен только после того, как все приложения были проверены, и все данные были извлечены.

Обратите внимание, что вы можете обнаружить, что маленькие изображения (такие как захват экрана) появляются даже без такого рода проверки, поскольку они достаточно быстро передаются на расширение, но это, безусловно, будет нарушено без этого для больших изображений, таких как типичные Фотографии iPhone.