UITTabBarController 自定义(重新定位标签栏)
Posted
技术标签:
【中文标题】UITTabBarController 自定义(重新定位标签栏)【英文标题】:UITTabBarController customization (repositioning tabbar) 【发布时间】:2011-01-31 19:28:45 【问题描述】:我正在尝试重新定位 UITabbarController 中的标签栏。我知道这不是一个好主意,但这就是我被要求做的。我设法将标签栏移动到屏幕顶部:
self.tabBarController.tabBar.frame = CGRectMake(0, 0, 768, 68);
而且效果很好。不幸的是,内容视图没有相应地重新定位。
重新定位标签栏后,我添加了内容视图并尝试手动调整它,但没有任何效果:
self.tabBarController.viewControllers = [NSArray arrayWithObjects:
[[[HomeViewController alloc] initWithNibName:nil bundle:nil] autorelease],
nil];
// dummy values for testing.
self.tabBarController.selectedViewController.view.frame = CGRectMake(0, 69, 10 , 10);
我做错了什么?
【问题讨论】:
【参考方案1】:如何将 tabBarController.view 的框架向下移动 68 像素? 您必须将 tabBar 框架的 y 坐标设置为 -68 而不是 0。
如果您看不到 tabBar,您可能需要将 tabBarController.clipsToBounds 设置为 NO。
虽然没试过。
【讨论】:
我可以正确定位标签栏,但无法进入“内容视图”的其余部分。我想我也许可以用 tabController.viewControllers objectAtIndex:0 来获得它(对于第一个选择的控制器),但是修改帧值没有任何效果.. 我想你不明白我的意思。我建议您更改 tabBarController 的视图框架。 viewController 的视图是该视图的子视图。试试这个:self.tabBarController.view.frame = CGRectMake(0, 68, 320, 460)。 我已经尝试过了,但它不起作用。更改 tabbarcontroller 视图背后的逻辑是什么?我假设 tabbarcontroller 由两个视图组成,标签栏和内容视图。但这似乎并非如此.. 一个视图控制器(如 tabBarViewController)总是有一个子视图。由 view 属性访问。我假设 tabBar (视图)是主视图的子视图。我的建议有什么作用还是你什么也没看到?你的视图层次结构是什么? (导航控制器?) 好的,我明白你的意思了。移动属于标签栏控制器的视图似乎没有任何作用。事实上,无论我为 tabbarController.view 设置什么框架,它似乎总是为按钮栏保留底部。现在,视图层次结构非常简单。带有简单视图的标签栏控制器来测试布局..以上是关于UITTabBarController 自定义(重新定位标签栏)的主要内容,如果未能解决你的问题,请参考以下文章