Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用uitabbarcontroller在上下文中绘制pdfpage_Iphone_Uinavigationcontroller_Uitabbarcontroller_Uitabbar_Cgcontext - Fatal编程技术网

Iphone 使用uitabbarcontroller在上下文中绘制pdfpage

Iphone 使用uitabbarcontroller在上下文中绘制pdfpage,iphone,uinavigationcontroller,uitabbarcontroller,uitabbar,cgcontext,Iphone,Uinavigationcontroller,Uitabbarcontroller,Uitabbar,Cgcontext,我有一个包含pdf的uiviewcontroller pdf在viewcontroller的上下文中绘制,部分由顶部的导航栏和底部的选项卡栏覆盖(这就是我想要的) 我想用双击隐藏这两个条,并可视化整个pdf页面 问题是pdf的底部没有绘制,当我隐藏底部选项卡栏时,这一事实变得很明显(在顶部隐藏导航栏效果很好) 我的问题是:隐藏底部栏后,如何在“完整”上下文中绘制pdf (我已经尝试使用setNeedsDisplay强制重画,但隐藏条后上下文仍然相同) 以下是绘制pdf页面的代码: -(void)

我有一个包含pdf的uiviewcontroller

pdf在viewcontroller的上下文中绘制,部分由顶部的导航栏和底部的选项卡栏覆盖(这就是我想要的)

我想用双击隐藏这两个条,并可视化整个pdf页面

问题是pdf的底部没有绘制,当我隐藏底部选项卡栏时,这一事实变得很明显(在顶部隐藏导航栏效果很好)

我的问题是:隐藏底部栏后,如何在“完整”上下文中绘制pdf

(我已经尝试使用
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);