我为pdf file.so创建了缩略图。每当用户点击任何一个缩略图时,它应该全屏显示。所以我使用了UIImageView来显示它。问题是那个。而不是显示{{0} }
但它显示的内容并不清楚......
我用来显示的代码是
(void) displayPdf
{
CGFloat width = 60.0;
NSLog(@"%d",i);
//UIImage* thumbnailImage;
NSLog(@"%@",fileName);
// NSString*fileName= @"2_slo_sample";
NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:@"pdf"];
NSURL* pdfFileUrl = [NSURL fileURLWithPath:path];
CGPDFPageRef page;
CGRect pageRect = CGRectMake(0, 0, 150,150);
CGFloat pdfScale = width/pageRect.size.width;
pageRect.size = CGSizeMake(pageRect.size.width*pdfScale, pageRect.size.height*pdfScale);
pageRect.origin = CGPointZero;
UIGraphicsBeginImageContext(pageRect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((__bridge CFURLRef)pdfFileUrl);
//NSUInteger totalNum = CGPDFDocumentGetNumberOfPages(pdf);
CGContextSaveGState(context);
CGContextTranslateCTM(context, 0.0, pageRect.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextSetGrayFillColor(context, 1.0, 1.0);
CGContextFillRect(context, pageRect);
// Grab the first PDF page
page = CGPDFDocumentGetPage(pdf, i);
CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(page, kCGPDFCropBox, pageRect, 0, false);
// And apply the transform.
CGContextConcatCTM(context, CGPDFPageGetDrawingTransform(page, kCGPDFMediaBox, pageRect, 0, true));
CGContextDrawPDFPage(context, page);
// Create the new UIImage from the context
thumbnailImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGPDFDocumentRelease(pdf);
//webView.hidden = YES;
imageView1 = [[UIImageView alloc] init];
imageView1.frame =CGRectMake(0, 50, 280, 280);
[imageView1 setContentMode:UIViewContentModeScaleAspectFit];
[imageView1 setNeedsDisplay];
imageView1.backgroundColor = [UIColor clearColor];
[imageView1 setUserInteractionEnabled:YES];
imageView1.image = thumbnailImage;
[self.view addSubview:imageView1];
}
请帮助我,以便我能清楚地显示它。
提前致谢
答案 0 :(得分:1)
您正在从pdf页面创建一个imageview。这一切都很好,花花公子,但我认为你是用小缩略图大小创建这个图像然后,当你想要的时候,你将该图像调整为全屏。这就像常见的CSI错误(增强,增强,增强......)。由于您使用有限的尺寸创建了图像视图,因此您不仅可以增加图像视图的大小,还可以自动显示像素清晰度。
您有两种不同的选择:
您可以将缩略图设为整页大小,然后将其缩小到缩略图大小(这会占用大量内存,可能会因为PDF格的大小而过多)。
当尺寸发生变化时,您可以重新创建imageview的图像(这将需要大量的处理能力并且可能会使UI陷入困境,从而导致烦恼)。
或者您可以在自定义UIView的drawRect:
函数中绘制pdf。这个是最常见的(从我读过的)。然后,当您更改UIView的大小以使其全屏时,您所要做的就是将其告诉setNeedsDisplay
。对于此选项的一个非常好的代码示例,我建议您查看PDFKitten。它可能比您正在寻找的更深入,但它对我有很大帮助。