具有滚动功能的自定义 UITabBarController

Posted

技术标签:

【中文标题】具有滚动功能的自定义 UITabBarController【英文标题】:Custom UITabBarController with Scrolling 【发布时间】:2014-08-13 18:23:49 【问题描述】:

我正在开发一个需要滚动 UITabBarController 的应用程序。习惯上最多 5 个选项卡项,第 5 个选项卡是 More.. 选项卡是行不通的。我发现了一些非常棒的第三方类,例如https://github.com/Marxon13/M13InfiniteTabBar,它们很棒并且具有我想要的功能,但仍然不是完美的。当我将设备旋转到横向时,事情就会出现故障。

基本上,我受够了,想创建自己的自定义 UITabBarController 滚动..我该怎么做呢?我知道我很可能会在 UIScrollView 中放置一个 UITabBar,但是如果没有详细的教程,我会迷失方向..

任何帮助将不胜感激!谢谢!!

【问题讨论】:

这个问题有什么问题?为什么投反对票? @rmaddy 【参考方案1】:

我的方法是避免修改UITabBar,因为它是高度专业化的,并创建一个UIViewController 子类来为您提供此功能。这个视图控制器应该有一个容器视图(查看Apple documentation 以获得更多详细信息),它将包含每个子视图控制器的内容视图。

对于实际的标签栏本身,您有几个选项,具体取决于您希望它与标准 UITabBar 的相似之处。

    你可以有一个 super basic 标签栏,它包含一个带有标准 UIButtons 的 UIScrollView,用于更改/加载正确的内容视图控制器。然后创建标签栏会很容易,只需将按钮添加到某种类型的循环内的滚动视图(您可以将 x 位置设置为标签索引的倍数以使定位更容易)。 UIButtons 支持您可以使用的选定按钮状态。您可以更改滚动视图的背景。

    您可以有一个 fancy 选项卡栏,其构造基本上与上述类似,但使用自定义 UIButton 子类而不是标准 UIButton。这将允许您实现更复杂的设计(即具有更多自定义的触摸处理。

提示:

使用[myImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] 让您的标签图像在选中时像标准标签一样着色。

在情节提要中设计自定义视图控制器的基础知识。通过这种方式添加子容器视图和滚动视图真的很容易。

希望这会有所帮助!

【讨论】:

感谢您的提醒!好的,我的理解是我有一个带有容器视图的自定义视图控制器,它将是我的表视图控制器所在的位置。现在我的问题是,在选择相应的选项卡按钮时,如何在不同的表视图控制器中正确交换和换算不同的表视图控制器? @sgonzalez 是的。这篇文章应该包含您需要的所有信息:***.com/questions/16330195/… 你我的朋友,是一个该死的美女! @sgonzalez 您发布的链接告诉我交换视图控制器进出容器视图将不起作用..? @sgonzalez 它确实有效。一个简单的方法是将故事板中的容器连接到您想要的所有视图控制器。然后,您可以对每个选项卡使用 performSegueWithIdentifier:sender:。查看此 GitHub 存储库以获取相关代码 (github.com/mhaddl/MHCustomTabBarController)。

以上是关于具有滚动功能的自定义 UITabBarController的主要内容,如果未能解决你的问题,请参考以下文章

使用 Interface Builder 和尽可能少的代码创建具有水平滚动的自定义 UITableViewCell

将 UITableViewDataSource 与具有子视图的自定义单元格一起使用

滚动会弄乱 UITableView 中的自定义单元格

垂直滚动中带有左侧停靠标题的自定义 UICollectionViewLayout

UITableView 的自定义滚动条

具有 UIPageControl 性能问题的自定义 UIScrollview