я использую xcode 5. Я хотел бы знать, как распечатать текущий вид. Итак, простая кнопка с надписью «печать», а затем, когда пользователь нажимает на нее, печатает все на экране. Как бы я это реализовал?
Воздушная печать вида
Ответы (2)
Сделать скриншот вида
и сохраните как png в пути и передайте данные в UIPrintInteractionController
СНИМОК ЭКРАНА
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 на принтер
person
Parthi
schedule
09.11.2013
К вашему сведению: ВАМ НЕ нужно записывать образ по пути, пока он не потребуется. ВЫ можете просто передать данные из UIImagePNGRepresentation и перейти к воздушной печати
- person Parthi; 09.11.2013
Спасибо, а добавить ли что-нибудь в файл .h? Извините, я действительно новичок в разработке xcode @Parthi
- person user2972076; 09.11.2013
Не нужно ничего добавлять в файл.
- person Parthi; 09.11.2013
ДЛЯ интеграции 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];
}
person
Parthi
schedule
09.11.2013
Простите, что беспокою и раздражаю вас, но что я имею в виду, помещая ТЕКУЩИЕ ДАННЫЕ ИЗОБРАЖЕНИЯ ЗДЕСЬ и в [self getimagedate]; Я получаю ошибки только для этих двух. Еще раз спасибо
- person user2972076; 09.11.2013
Вам нужно поставить См. первый код для скриншота NSData *date=UIImagePNGRepresentation(imges); эта дата как в CURRENTIMAGE DATA. Я отредактировал свой ответ выше
- person Parthi; 09.11.2013