如何创建一个标签栏出现在左边,而不是底部/顶部



嘿,伙计们,这是我的困境。我试图创建一个标签栏,横跨从上到下锚定在左侧,而不是从左到右锚定在底部。我创建了一个工具栏项,它可以将工具栏放置在我想要的位置,但我希望标签栏保持相同,具有相同的功能,当然除了发际线,并且工具栏项从上到下排列。

这是我的工具栏的代码,我知道标签栏也会有类似的代码,我只是碰到了一个萧条

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. 子类UITabBarController .
  2. 确保默认tabBar属性的hidden属性被设置为YES(因此其隐藏)并保持这种方式。
  3. 将任何自定义视图添加到这个子类的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;

最新更新