2013-12-17 3 views
0

Я создал эскизы для pdf file.so всякий раз, когда пользователь нажимает на любой из миниатюр, он должен отображаться в полноэкранном режиме.so я использовал UIImageView для dispaly it.the prob является that.instead отображения i need to display like thisОтображение созданного pdf пазла для ногтей в UIImage View Ясно

но это отображение, как это, не понятно ....

enter image description here

код, который я использую для отображения является

(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]; 
} 

так любезно, пожалуйста, помогите мне, чтобы я мог его четко отобразить.

заранее спасибо

ответ

1

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

У вас есть несколько различных вариантов:

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

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

Или вы можете нарисовать PDF в пользовательской UIView's drawRect:. Это один из самых распространенных (из того, что я прочитал). тогда, когда вы измените размер UIView, чтобы сделать его полноэкранным, все, что вам нужно сделать, это сообщить его setNeedsDisplay. Для действительно хорошего примера кода этого варианта я предлагаю вам посмотреть PDFKitten. Скорее всего, это намного глубже, чем вы искали, но это помогло мне совсем немного.

+1

да спасибо аллоту чувак я понял ошибку, которую я сделал ... спасибо за помощь ур .... –

+0

Хорошо j.Chandrasekhar Reddy. человек может только учиться на ошибках. Я ценю –

Смежные вопросы