如何创建一个标签栏显示在左侧而不是底部/顶部?

时间:2014-06-12 21:41:19

标签: ios uitabbarcontroller uitabbar

嘿,伙计们,这是我的两难选择。我正在尝试创建一个从上到下锚定在左侧而不是从左到右锚定在底部的标签栏。我创建了一个工具栏项目,将条形图放在我想要的位置,但我希望标签栏相同,功能相同,当然除了发际线,以及从上到下排列的条形项目。

这是我的工具栏代码,我知道标签栏的编码方式类似,我只是遇到了萧条。

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];

我感谢帮助人员!

1 个答案:

答案 0 :(得分:1)

你需要做的是这个:

  1. 子类UITabBarController
  2. 确保默认tabBar属性的hidden属性设置为YES(因此隐藏)并保持这种状态。
  3. 将您要用作标签栏的任何自定义视图添加到此子类的view属性中(就像您将视图作为子视图添加到UIViewController一样)。
  4. 您在步骤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;