嘿,伙计们,这是我的困境。我试图创建一个标签栏,横跨从上到下锚定在左侧,而不是从左到右锚定在底部。我创建了一个工具栏项,它可以将工具栏放置在我想要的位置,但我希望标签栏保持相同,具有相同的功能,当然除了发际线,并且工具栏项从上到下排列。
这是我的工具栏的代码,我知道标签栏也会有类似的代码,我只是碰到了一个萧条
UIToolbar *toolBarLeft = [[UIToolbar alloc] init];
toolBarLeft.frame = CGRectMake(0, 20, 50, 568);
toolBarLeft.layer.borderColor = [UIColor lightGrayColor].CGColor;
toolBarLeft.layer.borderWidth = 0.5f;
[self.view addSubview:toolBarLeft];
我很感谢你们的帮助! 您需要做的要点是:
- 子类
UITabBarController
. - 确保默认
tabBar
属性的hidden
属性被设置为YES
(因此其隐藏)并保持这种方式。 - 将任何自定义视图添加到这个子类的
view
属性中作为选项卡(就像你将视图添加到UIViewController
的子视图一样)。
你在步骤3中添加的子视图应该响应触摸并有一个委托属性。UITabBarController
子类应该委托视图,以便它可以响应不同的选项卡被选中(以及许多其他事情)。
只要导航栏合乎逻辑且易于理解,你的应用程序就不会因为修改标签栏的工作方式而被拒绝。
附录:
对于步骤3,假设您希望制表符垂直堆叠,我实际上建议使用UITableView
子类,其中tableView:heightForRowAtIndexPath:
返回的值计算如下:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath {
CGFloat totalHeight = tableView.frame.size.height;
CGFloat totalTabs = (CGFloat)[tableView numberOfRowsInSection:0];
return totalHeight/totalTabs;
}
和滚动被禁用。
因为现在当tableView:didSelectRowAtIndexPath:
被触发时,我们可以告诉标签栏控制器:tabBarController.selectedIndex = indexPath.row;