如何创建一个像 Instagram 主页一样的页面视图控制器,它也可以滚动标签栏?

Posted

技术标签:

【中文标题】如何创建一个像 Instagram 主页一样的页面视图控制器,它也可以滚动标签栏?【英文标题】:How to create a Page View Controller like Instagram homepage that also scrolls Tab Bar? 【发布时间】:2019-03-28 21:48:23 【问题描述】:

我想创建一个像 Instagram 一样的主页,它可以垂直滚动(带有导航控制器、标签栏项目……)到另一个视图控制器。例如,当我从 Instagram 主页向左滑动时,它将滚动到带有另一个标签栏项目的直接消息,并且标签栏也向左移动并被直接消息视图控制器中的新标签栏替换。

我尝试使用 UIPageViewController,但因为我使用了 Tab Bar,所以当我开始滚动时,Tab Bar 保持在原位。如何实现所需的行为?

【问题讨论】:

【参考方案1】:

由于您提到即使在水平滑动时标签栏仍保持在原位,我相信您的视图控制器层次结构看起来像这样:

UITabBarController
└── UIPageViewController
    ├── UIViewController1
    ├── UIViewController2
    ├── .
    ├── .
    ├── .

但是您需要将 Tab Bar Controller 放在 Page View Controller 中,因此您的 View Controller 层次结构会变成这样:

UIPageViewController
└── UITabBarController
    ├── UIViewController1
    ├── UIViewController2
    ├── .
    ├── .
    ├── .

【讨论】:

谢谢贝赫达。这对我有用。但是现在的问题是当用户去Tabbarchildren 时,所有children 都有滑动手势并且可以看到UITabBarController兄弟姐妹。我这样做了,但我认为有更好的方法:默认情况下,scrollViewUIPageViewController 中有isScrollEnabled = false。就在viewWillAppearUIViewController1 中,我设置为true【参考方案2】:

您可以像以前一样尝试使用UIPageViewController,并让您的每个页面都是UITabViewController,并且您的视图嵌套在tabviewcontroller 中。

【讨论】:

以上是关于如何创建一个像 Instagram 主页一样的页面视图控制器,它也可以滚动标签栏?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作像 Instagram 故事个人资料图像一样的圆形图像

如何像 instagram 一样实现模态向下滑动?

如何使用单个 UITableView 设计像 instagram 一样的时间线?

如何像 instagram 一样快速加载图像

如何制作像 Instagram 一样的导航栏

如何在 iphone 中使用 avFoundation 像 Instagram 应用一样拍摄方形照片?