Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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 SDK 3.1中,在导航屏幕中隐藏TabBar会导致屏幕移动20像素_Iphone_Objective C_Uinavigationbar_Uitabbar - Fatal编程技术网

在iPhone SDK 3.1中,在导航屏幕中隐藏TabBar会导致屏幕移动20像素

在iPhone SDK 3.1中,在导航屏幕中隐藏TabBar会导致屏幕移动20像素,iphone,objective-c,uinavigationbar,uitabbar,Iphone,Objective C,Uinavigationbar,Uitabbar,绅士们, 我是iPhone&Objective-C的新手,有很长的过程语言背景 我正试图模仿Whole Foods的食谱搜索功能。在该应用程序中,屏幕顶部有一个导航栏,底部有一个选项卡栏,屏幕顶部有一组三个按钮。选择一个按钮将显示一个从底部向上滑动的屏幕,覆盖选项卡栏。向上滑动屏幕包含选择器和“完成”按钮。这不是一个模式屏幕,您可以从上面选择不同的按钮,选择器将动态更改。此外,这不是行动表 在重新创建此行为时,我使用了iPhone的ScrollViewSuite示例中的Autoscroll项目来

绅士们, 我是iPhone&Objective-C的新手,有很长的过程语言背景

我正试图模仿Whole Foods的食谱搜索功能。在该应用程序中,屏幕顶部有一个导航栏,底部有一个选项卡栏,屏幕顶部有一组三个按钮。选择一个按钮将显示一个从底部向上滑动的屏幕,覆盖选项卡栏。向上滑动屏幕包含选择器和“完成”按钮。这不是一个模式屏幕,您可以从上面选择不同的按钮,选择器将动态更改。此外,这不是行动表

在重新创建此行为时,我使用了iPhone的ScrollViewSuite示例中的Autoscroll项目来显示一个非模式的向上滑动屏幕。这很有效。通过选择不同的按钮,我可以在向上滑动屏幕中动态更改选择器

因为我想让滑动屏幕覆盖选项卡栏,所以我使用了来自的建议。简而言之,增加tabBarController.view.frame高度可以有效地使框架比屏幕大,并且锚定到底部的TabBar将从用户视图中移除。向上滑动屏幕和隐藏选项卡栏的组合是可以接受的。生活相对乐观。我所需要做的就是添加导航栏

但是,当我将IB中的屏幕从视图控制器更改为Navigaion控制器屏幕时,我在隐藏TabBar时不知何故在视图中引入了20像素的偏移!?导航栏本身很好,但它下面的所有内容都向上移动了20像素。不过,向上滑动屏幕仍然很好。20像素是iPhone状态栏的高度

我的IB是标准配置,有一个带有TabBarConColler的MainWindow.xib,以及其中的导航控制器

代码如下:

- (void)toggleThumbView 
{
 if (!thumbViewShowing) 
  { 
  [self createSlideUpViewIfNecessary]; // no-op if slideUpView has already been created

  //Hide the TabBar, which introduces a 20 pixel shift up of everything except the navigation bar
  UITabBar *ntoTabBar = self.tabBarController.tabBar;
  CGRect tbcFrame = self.tabBarController.view.frame; 
  self.tabBarController.view.frame = CGRectMake(tbcFrame.origin.x , 
               tbcFrame.origin.y  ,    
               tbcFrame.size.width , 
               tbcFrame.size.height + ntoTabBar.frame.size.height);

  //The following code really doesn't matter for discussions about the problem,  simply resizing the
  //tabBarController.view.frame above has already introduced the 20 pixel problem

  CGRect frame = [slideUpView frame];
        frame.origin.y -= frame.size.height ;
        frame.origin.y += ntoTabBar.frame.size.height ;

  [UIView beginAnimations:nil context:nil];
  [UIView setAnimationDuration:0.3];
  [slideUpView setFrame:frame];
  [UIView commitAnimations];

  thumbViewShowing = !thumbViewShowing;
  }  
}
我试过玩autoresizingMask和AutoResizesSubView。以下消除了20像素的偏移:

[self.tabBarController.view setAutoresizesSubviews:NO];
不幸的是,它还阻止了TabBar被隐藏。考虑到20像素可能是线索,我尝试在所有的XIB上取消选中IB“想要全屏”,但没有效果。我已经检查并取消了NIB中的调整大小,我已经删除了所有的模拟界面元素,这样程序就可以控制调整大小了,我相信那些模拟的元素会禁止程序控制吗?同样,似乎没有什么能起到作用。将tbcFrame.origin.y增加20像素可以消除屏幕偏移,但会导致导航栏降低20像素,覆盖下面的任何内容,并在顶部留下一个可爱的20像素边距。问题出现在3.0SDK模拟器中,我升级到了3.1.2。很高兴有最新/最棒的,但它没有解决我的问题

如果我不是秃头的话,我会把头发拔出来。如有任何关于在何处查找的建议,将不胜感激。是否最好通过单独的ViewController推送幻灯片视图,并消除选项卡栏的编程隐藏?比如:

DetailViewController *dvc = [[DetailViewController alloc] init];
dvc.hidesBottomBarWhenPushed = YES;
[[self navigationController] pushViewController:dvc animated:YES];
[dvc release];
提前谢谢大家,


Bob B.

所以,如果我能理解的话,你的问题是,你的a模式视图被覆盖了,你的导航栏是从底部20px开始的,不是吗

如果是,请尝试转到a类模态视图的NIB文件,并检查选项状态栏是否未选中。如果是那样的话,试着换成灰色,例如

我希望它能解决这个问题,如果不能,请让我知道,我将尝试看看它可能是什么

干杯,
VFN

所以,如果我能理解的话,你的问题是,你的一种模态视图被覆盖了,你的导航栏是从底部20px开始的,不是吗

如果是,请尝试转到a类模态视图的NIB文件,并检查选项状态栏是否未选中。如果是那样的话,试着换成灰色,例如

我希望它能解决这个问题,如果不能,请让我知道,我将尝试看看它可能是什么

干杯,
VFN

Virgilio,谢谢你的意见。向上滑动视图(也称为拇指视图)是在SearchView中以编程方式创建的,而不是通过NIB;但是,我在SearchView NIB中将状态栏更改为“灰色”,但这没有起任何作用。我还选中/取消选中了Info.plist中隐藏的UIStatusBar,并在Info.plist中设置了UIStatusBarStyle。检查UIStatusBarHidden实际上消除了20像素的偏移,但代价是根本没有状态栏。我已经通过电子邮件向您发送了我的应用程序和我尝试模拟的应用程序的屏幕截图。我把原稿插错了。邮递我正在模拟的应用程序实际上是一个表视图。从表格中选择一个单元格会向上滑动picker视图,该视图覆盖屏幕的下半部分,允许用户动态地拾取屏幕上半部分的三个单元格中的任意一个。我很感激
你的时间和投入。我不认为让我的应用程序按钮驱动而不是表格驱动会有什么不同,但这是我的一个假设。再次感谢你-鲍勃·维吉利奥,谢谢你的意见。向上滑动视图(也称为拇指视图)是在SearchView中以编程方式创建的,而不是通过NIB;但是,我在SearchView NIB中将状态栏更改为“灰色”,但这没有起任何作用。我还选中/取消选中了Info.plist中隐藏的UIStatusBar,并在Info.plist中设置了UIStatusBarStyle。检查UIStatusBarHidden实际上消除了20像素的偏移,但代价是根本没有状态栏。我已经通过电子邮件向您发送了我的应用程序和我尝试模拟的应用程序的屏幕截图。我把原稿插错了。邮递我正在模拟的应用程序实际上是一个表视图。从表格中选择一个单元格会向上滑动picker视图,该视图覆盖屏幕的下半部分,允许用户动态地拾取屏幕上半部分的三个单元格中的任意一个。我感谢你的时间和投入。我不认为让我的应用程序按钮驱动而不是表格驱动会有什么不同,但这是我的一个假设。再次感谢你-鲍勃B。