Iphone 使用uitabbarcontroller在上下文中绘制pdfpage
我有一个包含pdf的uiviewcontroller pdf在viewcontroller的上下文中绘制,部分由顶部的导航栏和底部的选项卡栏覆盖(这就是我想要的) 我想用双击隐藏这两个条,并可视化整个pdf页面 问题是pdf的底部没有绘制,当我隐藏底部选项卡栏时,这一事实变得很明显(在顶部隐藏导航栏效果很好) 我的问题是:隐藏底部栏后,如何在“完整”上下文中绘制pdf (我已经尝试使用Iphone 使用uitabbarcontroller在上下文中绘制pdfpage,iphone,uinavigationcontroller,uitabbarcontroller,uitabbar,cgcontext,Iphone,Uinavigationcontroller,Uitabbarcontroller,Uitabbar,Cgcontext,我有一个包含pdf的uiviewcontroller pdf在viewcontroller的上下文中绘制,部分由顶部的导航栏和底部的选项卡栏覆盖(这就是我想要的) 我想用双击隐藏这两个条,并可视化整个pdf页面 问题是pdf的底部没有绘制,当我隐藏底部选项卡栏时,这一事实变得很明显(在顶部隐藏导航栏效果很好) 我的问题是:隐藏底部栏后,如何在“完整”上下文中绘制pdf (我已经尝试使用setNeedsDisplay强制重画,但隐藏条后上下文仍然相同) 以下是绘制pdf页面的代码: -(void)
setNeedsDisplay
强制重画,但隐藏条后上下文仍然相同)
以下是绘制pdf页面的代码:
-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx
{
}
初始化条形图的代码(在appdelegate中):
以及隐藏条的代码:
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;
}
}
谢谢NSLog the self.bounds,这里有一个很好的工具箱函数:
-(NSString*)getStringFromCGRect:(CGRect)rect WithLabel:(NSString*)idName
{
return [NSString stringWithFormat:@">%@\nx:%f\ny:%f\nWidth:%f\nHeight:%f\n\n",idName,rect.origin.x,rect.origin.y,rect.size.width,rect.size.height];
}
我猜您的边界将是视图大小和工具栏高度,如果不是这样,您是否在创建绘图类时配置了任何
CALayer
?问题在于隐藏条形图的代码,如下所示:
[controller setNavigationBarHidden:(!controller.navigationBar.hidden) animated:YES];
tabBarController.tabBar.hidden = !tabBarController.tabBar.hidden;
第一行是一个helper方法,它可以为您删除导航栏——因此它可以很好地将自己从视图中删除。
第二行只是更改“hidden”属性,因此它不会很好地删除自身
为了使选项卡栏能够很好地隐藏起来,并且不剪裁您的上下文需要调整其框架。下面是一个示例,或者您可以在选项卡栏上设置框架,如下所示:
与第二行交换
很好的功能,但在这种情况下不会透露太多。我认为不必要的dv矩形大小是正确的(320 x 460),但pdf仍然被剪裁。我没有配置任何CALayer,但现在我正在尝试绘制ovverriding-(void)drawRect:(CGRect)r,但结果是相同的,那么绘制上下文的层的边界/帧呢?谢谢,通过示例,动画运行良好,但pdf仍然被不可见的底部栏剪裁。
-(NSString*)getStringFromCGRect:(CGRect)rect WithLabel:(NSString*)idName
{
return [NSString stringWithFormat:@">%@\nx:%f\ny:%f\nWidth:%f\nHeight:%f\n\n",idName,rect.origin.x,rect.origin.y,rect.size.width,rect.size.height];
}
[controller setNavigationBarHidden:(!controller.navigationBar.hidden) animated:YES];
tabBarController.tabBar.hidden = !tabBarController.tabBar.hidden;
tabBarController.tabBar.frame = CGRectMake(0,0,0,0);