【问题标题】:How to create a Tab Bar appear on the left instead of the Bottom/Top?如何创建一个标签栏出现在左侧而不是底部/顶部?
【发布时间】:2014-06-12 21:41:19
【问题描述】:

嘿,伙计们,这是我的困境。我正在尝试创建一个从上到下锚定在左侧的标签栏,而不是从左到右锚定在底部。我创建了一个工具栏项目,将栏准确地放置在我想要的位置,但我希望标签栏相同,具有相同的功能,当然细线到位,并且栏项目从上到下排列。

这是我的工具栏代码,我知道标签栏的代码也会类似,我只是遇到了低谷。

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

感谢大家的帮助!

【问题讨论】:

  • 你在使用故事板吗?
  • 不,我认为 Storyboard 不具备执行我想要执行的操作的功能,因为我几乎找不到任何有关此问题的信息。所以我知道我必须以编程方式进行。
  • 你可以通过storyboard/xib文件来做一些事情。其中一些您必须以编程方式完成。

标签: ios uitabbarcontroller uitabbar


【解决方案1】:

你需要做的要点是:

  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;

【讨论】:

  • 我有点明白下一步该做什么了。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 2015-10-16
  • 2013-07-29
  • 1970-01-01
相关资源
最近更新 更多