PDFを含むuiviewcontrollerがあります。
PDFはviewcontrollerのコンテキストで描画され、上部のナビゲーションバーと下部のタブバーで部分的に覆われています(これが私が欲しいものです)。
ダブルタップで 2 つのバーを非表示にして、pdf ページ全体を視覚化したいと考えています。
問題は、pdf の下部が描画されず、下部のタブバーを非表示にすると、この事実が明らかになることです (上部のナビゲーションバーの非表示はうまく機能します)。
私の質問は次のとおりです。ボトムバーを非表示にした後、「完全な」コンテキストでpdfを描画するにはどうすればよいですか?
(私はすでにsetNeedsDisplay
再描画を強制するために使用しようとしましたが、バーが非表示になった後もコンテキストは同じです)
以下は、pdf ページを描画するコードです。
-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx
{
CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0);
CGContextFillRect(ctx, self.bounds);
CGContextTranslateCTM(ctx, 0.0, self.bounds.size.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(pdfPage,kCGPDFMediaBox,self.bounds, 0, true));
CGContextDrawPDFPage(ctx, pdfPage);
}
バーを初期化するコード (appdelegate 内):
tabBarController = [[UITabBarController alloc] init];
MagazineViewController *magazineViewController = [[MagazineViewController alloc] init];
NewsTableViewController *newsViewController = [[NewsTableViewController alloc] init];
VideoViewController *videoViewController = [[VideoViewController alloc] init];
UINavigationController *magazineNavigationController = [[UINavigationController alloc] initWithRootViewController:magazineViewController];
UINavigationController *newsNavigationController = [[UINavigationController alloc] initWithRootViewController:newsViewController];
UINavigationController *videoNavigationController = [[UINavigationController alloc] initWithRootViewController:videoViewController];
magazineNavigationController.navigationBar.tintColor = [UIColor blackColor];
newsNavigationController.navigationBar.tintColor = [UIColor blackColor];
videoNavigationController.navigationBar.tintColor = [UIColor blackColor];
NSArray *tabsArray = [NSArray arrayWithObjects:magazineNavigationController, newsNavigationController, videoNavigationController, nil];
tabBarController.viewControllers = tabsArray;
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
バーを非表示にするコード:
for (UINavigationController *controller in tabBarController.viewControllers) {
if(controller.navigationBar.topItem.title == @"Magazine") {
[controller setNavigationBarHidden:(!controller.navigationBar.hidden) animated:YES];
tabBarController.tabBar.hidden = !tabBarController.tabBar.hidden;
[self setNeedsDisplay];
return;
}
}
ありがとう