30 EYLÜL 2011, Cuma
Biz Çizim Sayfa
PDF
İçeriği scrollview
içeriği çekmek için çalışıyorum & pagination
ile sorunu ile karşı karşıyayım.
Aşağıdaki Kodu kullandım:
- (void)renderTheView:(UIView *)view inPDFContext:(CGContextRef)pdfContext
{
// Creating frame.
CGFloat heightOfPdf = [[[self attributes] objectForKey:SRCPdfHeight] floatValue];
CGFloat widthOfPdf = [[[self attributes] objectForKey:SRCPdfWidth] floatValue];
CGRect pdfFrame = CGRectMake(0, 0, widthOfPdf, heightOfPdf);
CGRect viewFrame = [view frame];
if ([view isKindOfClass:[UIScrollView class]])
{
viewFrame.size.height = ((UIScrollView *)view).contentSize.height;
[view setFrame:viewFrame];
}
// Calculates number of pages.
NSUInteger totalNumberOfPages = ceil(viewFrame.size.height/heightOfPdf);
// Start rendering.
for (NSUInteger pageNumber = 0; pageNumber<totalNumberOfPages; pageNumber )
{
// Starts our first page.
CGContextBeginPage (pdfContext, &pdfFrame);
// Turn PDF upsidedown
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformMakeTranslation(0,view.bounds.size.height);
transform = CGAffineTransformScale(transform, 1.0, -1.0);
CGContextConcatCTM(pdfContext, transform);
// Calculate amount of y to be displace.
CGFloat ty = (heightOfPdf*(pageNumber));
CGContextTranslateCTM(pdfContext,0,-ty);
[view.layer renderInContext:pdfContext];
// We are done drawing to this page, let's end it.
CGContextEndPage (pdfContext);
}
}
Sayfalar gerekli sayıda yaratır ama yanlış içerik yerleştirir. Şekil aşağıdaki açıklıyor.11*
Benim kodunda bir sorun mu var?
CEVAP
28 ŞUBAT 2013, PERŞEMBE
UIScrollView
düzeni ayrı bir PDF sayfalarını kullanarak düşünebiliriz. Aşağıdaki yöntemi bir görünüm (PDFView
) her PDF Sayfa yükler ve kaydırma görünümü ortalanmış bir şekilde içerik ekler:
- (void) loadPDFAtPath:(NSString *)path
{
NSURL *pdfUrl = [NSURL fileURLWithPath:path];
CGPDFDocumentRef document = CGPDFDocumentCreateWithURL((__bridge CFURLRef)pdfUrl);
float height = 0.0;
for(int i = 0; i < CGPDFDocumentGetNumberOfPages(document); i ) {
CGPDFPageRef page = CGPDFDocumentGetPage(document, i 1);
PDFView *pdfView = [[PDFView alloc] initPdfViewWithPageRef:page];
CGRect pageSize = CGPDFPageGetBoxRect(page, kCGPDFCropBox);
pv.frame = CGRectMake((self.frame.size.width / 2.0) - pageSize.size.width / 2.0, height, pageSize.size.width, pageSize.size.height);
height = pageSize.size.height SOME_SPACE_IN_BETWEEN_PAGES;
// self is a subclass of UIScrollView
[self addSubview:pdfView];
[pdfView setNeedsDisplay];
}
CGPDFDocumentRelease(document);
[self setContentSize:CGSizeMake(self.frame.size.width, height)];
}
Bu durumda, PDFView
CGPDFPageRef
drawRect veya drawLayer tek bir uygulama işleme sorumludur.
Bunu Paylaş:
Otomatik Metin Nasıl devre dışı MSDN s...
Nasıl bir sayfa YAZI fiil kullanarak y...
Raylar 3: "-alan-hata" sarıc...
GluSphere kullanmadan OpenGL Küre çizi...
Nasıl değiştirmek için ViewPager'...