1
您好我最近与Leaves api工作,我有这个问题,我需要显示一个PDF文件,并且我的ViewController
类有一个nib文件,我实现代码基于API示例代码但没有显示任何东西!我错过了什么吗?iPhone:实现Ole叶API
#import "BookViewController.h"
#import "Utilities.h"
@implementation BookViewController
/////EDITED//////////////
- (id) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
if (self = [super initWithNibName:@"BookViewController" bundle:nil]) {
CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("paper.pdf"), NULL, NULL);
pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);
CFRelease(pdfURL);
}
return self;
}
- (void)dealloc {
CGPDFDocumentRelease(pdf);
[super dealloc];
}
- (void) displayPageNumber:(NSUInteger)pageNumber {
self.navigationItem.title = [NSString stringWithFormat:
@"Page %u of %u",
pageNumber,
CGPDFDocumentGetNumberOfPages(pdf)];
}
#pragma mark LeavesViewDelegate methods
- (void) leavesView:(LeavesView *)leavesView willTurnToPageAtIndex:(NSUInteger)pageIndex {
[self displayPageNumber:pageIndex + 1];
}
#pragma mark LeavesViewDataSource methods
- (NSUInteger) numberOfPagesInLeavesView:(LeavesView*)leavesView {
return CGPDFDocumentGetNumberOfPages(pdf);
}
- (void) renderPageAtIndex:(NSUInteger)index inContext:(CGContextRef)ctx {
CGPDFPageRef page = CGPDFDocumentGetPage(pdf, index + 1);
CGAffineTransform transform = aspectFit(CGPDFPageGetBoxRect(page, kCGPDFMediaBox),
CGContextGetClipBoundingBox(ctx));
CGContextConcatCTM(ctx, transform);
CGContextDrawPDFPage(ctx, page);
}
#pragma mark UIViewController
- (void) viewDidLoad {
[super viewDidLoad];
leavesView.backgroundRendering = YES;
[self displayPageNumber:1];
}
谢谢你,我将其更改为initWithNibName,但不会再改变任何东西,你会请参阅我的编辑的问题,并检查它 –
有什么办法来加载PDF无榫文件?因为我的应用程序是Universal –
,那么你需要一个'init'方法(而不是'initWithNibName'),那么当你需要它的时候显式地实例化它(从你的应用程序委托?),并将它的视图添加到它所属的位置你应用委托给主窗口)。你也需要在你的控制器中实现'loadView'(几秒钟后查看我的编辑) – sergio