2013-11-09 1 views
0

im используя xcode 5. Я хотел бы знать, как печатать текущее изображение. Итак, простая кнопка, которая говорит «печатать», когда пользователь нажимает на нее, он печатает все на экране. Как мне это реализовать?Воздушная печать вид

ответ

2

Возьмите скриншот зрения

и сохранить как PNG в пути и передать данные UIPrintInteractionController

SCREENSHOT

UIGraphicsBeginImageContextWithOptions(self.view.frame.size, NO, 0.0); 
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

CGRect rect=self.view.frame; 


CGImageRef cropped1 = CGImageCreateWithImageInRect(viewImage.CGImage, rect); 
UIImage *imges = [UIImage imageWithCGImage:cropped1]; 
CGImageRelease(cropped1); 
// squarecropimg.image=imges; 

NSData *date=UIImagePNGRepresentation(imges); 
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *doc=[paths objectAtIndex:0]; 
NSString *appstr=[doc stringByAppendingPathComponent:@“currentview.png"]; 

[Дата WriteToFile: appstr атомарно: YES];

передать данные о CURRENTVIEW.PNG на принтер

+0

FYI: вам не нужно, чтобы Записываем образ на пути до тех пор пока он требует. Вы можете просто передать данные из представления UIImagePNGR и перейти к печати воздуха – Parthi

+0

Спасибо, но я что-то добавлю в файл .h? Извините, им действительно ничего не нужно для разработки xcode @Parthi – user2972076

+0

Не нужно добавлять никаких файлов. – Parthi

0

ДЛЯ интеграции UIPrintInteraction добавить UIPrintInteractionControllerDelegate и использовать следующий код

UIPrintInteractionController *print_picker = [UIPrintInteractionController sharedPrintController]; 

if(print_picker && [UIPrintInteractionController canPrintData: **CURRENTIMAGE DATA HERE** ]) { 

    print_picker.delegate = self; 

    UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
    printInfo.outputType = UIPrintInfoOutputGeneral; 
    printInfo.jobName = @"JOBNAME"; 
    printInfo.duplex = UIPrintInfoDuplexLongEdge; 
    print_picker.printInfo = printInfo; 
    print_picker.showsPageRange = YES; 
    print_picker.printingItem = **CURRENTIMAGE DATA HERE**; 

    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *pic, BOOL completed, NSError *error) { 
     //self.content = nil; 
     if (!completed && error) { 
      NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, error.code); 
     } 
    }; 

    [print_picker presentAnimated:YES completionHandler:completionHandler]; 

} 
+0

Мне очень жаль беспокоить вас и раздражать вас, но что я хотел бы внести ** CURRENTIMAGE DATA HERE ** и в [self getimagedate]; Я получаю ошибки только для этих двух. Еще раз спасибо – user2972076

+0

Вам нужно поставить первый код для скриншота NSData * date = UIImagePNGRepresentation (imges); эта дата и в обоих данных CURRENTIMAGE DATA. Я отредактировал мой ответ выше – Parthi