为了进一步学习,我正在尝试复制默认的iPhone Calendar导航实现。我在肖像中看到的是一个半标准的导航栏,其中在年视图中选择一个月将推动月视图,在月中的某天选择将推动日视图。
但是,更改为横向时,我们有一个分段控件而不是标题,并且标题位于左侧栏按钮的位置。我的问题有两个。
首先,当方向发生变化时,我应该如何考虑使用标题/分段控件和左栏按钮完成布局更改?
第二,采用分段控制的横向模式在幕后发生了什么?例如,如果细分为“天”是当前视图,那么选择其他细分时会发生什么?如果选择了“月”,则是否将月视图推到日视图上方?或者,是否在按周视图之前弹出了日视图?此外,切换回纵向,看来当前视图已被推到上一个视图之上。
我想我很难集中精力处理正在发生的事情,以及围绕分段控件进行切换并进行各种选择,而没有做选择。
答案 0 :(得分:1)
首先,我不认为它是“扩展的”导航栏,而是一个附加的UIView,它设置在导航栏的正下方,并且具有相同的颜色/样式。
我认为您需要查看水平和垂直的UIContainers和Stacks。
通过这种方式,您将拥有一个UIViewController,该UIViewController控制显示一周中各天的UIView并处理动画和状态,但是在父级UIViewController中,您将拥有一个UIContainer视图,该视图将在ViewDidLoad上设置导航栏的框架,然后加载到子UIViewControllers视图中并将其设置为容器的视图。
这使您可以将逻辑分离为更小,更易于管理的UIViewController,并且可以在运行时根据设备方向不断添加或删除它们。
选中此项以获取有关UIContainers的信息:
看看如何使用堆栈:
这是另一篇关于UIContainerViews合成的精彩文章:
https://medium.com/flawless-app-stories/container-view-controllers-revisited-e076ef38853f