我正在使用代码在我的应用程序中获取Airprint以将当前视图打印为图像.弹出Airprint对话框但在日志屏幕中它显示两个警告:
1)警告:在iPad上调用 - [UIPrintInteractionController presentAnimated:completionHandler:]无法找到PDF标题:找不到`%PDF'.
2)[UIPopoverController_commonPresentPopoverFromRect:inView:allowedArrowDirections:animated:]:传入此方法的rect必须具有非零的宽度和高度.这将是未来版本中的一个例外.
我已经在网上搜索过,但发现所有解决方案都提供了常规的rect按钮
我在这里使用的是一个分段控件,我不知道在这种情况下如何使用这个控件
这是段控制代码:
- (IBAction)legalSegment:(id)sender {
switch (((UISegmentedControl *)sender).selectedSegmentIndex) {
case 0:
{
[self printItem];
break;
}
}
Run Code Online (Sandbox Code Playgroud)
这是printItem方法:
-(void)printItem {
CGRect rect = CGRectMake(0, 0, 768, 1004);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.view.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIPrintInteractionController* pic = [UIPrintInteractionController sharedPrintController];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(img)];
if (pic && [UIPrintInteractionController canPrintData:imageData])
{
pic.delegate = self;
UIPrintInfo* printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputPhoto;
printInfo.jobName = @"PrintingImage";
printInfo.duplex = UIPrintInfoDuplexLongEdge;
pic.printInfo = printInfo;
pic.showsPageRange = YES;
pic.printingItem = imageData;
void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if (!completed && error) {
NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, error.code);
}
};
[pic presentAnimated:YES completionHandler:completionHandler];
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒.提前致谢 !
Leo*_*ica 15
在iPad上,您应该使用控制器提供的popover API.它在文档中提到.
presentAnimated:completionHandler:在工作表中显示iPhone打印用户界面,该工作表可以从屏幕底部向上滑动.
presentFromBarButtonItem:animated:completionHandler:在弹出视图中显示iPad打印用户界面,该视图可以通过条形按钮项目进行动画处理.
presentFromRect:inView:animated:completionHandler:在弹出视图中显示iPad打印用户界面,该视图可以从视图中的任何区域进行动画处理.
您应该在相应的设备类型上使用正确的方法.
if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) {
[pic presentFromRect:self.view.frame inView:self.view animated:YES completionHandler:completionHandler];
}
else {
[pic presentAnimated:YES completionHandler:completionHandler];
}
Run Code Online (Sandbox Code Playgroud)
您应该为弹出窗口演示使用适当的参数.
| 归档时间: |
|
| 查看次数: |
4741 次 |
| 最近记录: |