iOs 中所有 uiviewcontrollers 中的操作栏
Posted
技术标签:
【中文标题】iOs 中所有 uiviewcontrollers 中的操作栏【英文标题】:Action bar in all uiviewcontrollers in iOs 【发布时间】:2014-10-04 08:09:01 【问题描述】:在 iO 中创建操作栏(仅一次)以在所有 UIViewController 中保持其位置/大小/内容的最佳方法是什么? 我可以为被推送的 UIViewController 设置动画而不为栏设置动画吗?
我正在检查是否可以使用 UIToolBar 或 UINavigationController 来完成。我在正确的轨道上吗?
提前致谢
【问题讨论】:
两者都可以。如果您在 A UINavigationController 中嵌入 ViewController,则 push segue 会将 UINavigationBar 嵌入到下一个视图中。如果你有一个 UITAbBarController,你会为每个 UITabBarItem 获得不同的视图,但 UITAbBar 仍然存在。等等,对于 UITollBar。 感谢您的回复。请检查我对 Atif 的回答的评论以进行澄清:) @MinnesotaSteve 【参考方案1】:是的,这就是要走的路。还可以使用会自动为您提供导航栏(操作栏)的导航层次结构。在 Tabbar 上,您必须创建不同的导航层次结构。
【讨论】:
感谢您的回复。我创建了一个嵌入到 UIViewController 的 UINavigationController 并按照我的意愿设计了这个栏。但是,当推送到另一个 UIViewController 时,这个栏会变成我不想要的“ 就像我说的,如果您使用导航控制器,它会自动提供给您。如果您想为所有视图控制器坚持使用单个导航栏,您可以将控制器扩展到您的基础并在那里设置您的导航栏,这对所有人都是一样的。 但是在这种情况下,当推送新的uiviewcontroller时,bar会动画并重新出现在屏幕上不是吗?不能这样做以使栏在此过渡期间保持静止吗? @AtifImran 你可以 pushViewController 与 Animation:NO 别担心,但请记住,UI 是特定于平台的东西,您应该尝试跟上它,直到并且除非您的应用程序中有特定点需要它。如果您尝试了太多在您正在开发的平台上没有实践过的事情,这也将成为应用拒绝的一个重点。【参考方案2】:我最终做了以下事情:
1- 在故事板中创建了一个 UIViewController,其中包含一个设计为操作栏的 UIView,其下方是一个 容器
2-我将这个容器嵌入到另一个 UIViewController 中,在这种情况下它将成为根视图控制器
3- 在 prepareForSegue 上,我保存了加载到容器中的 UIViewController 实例
4-在这个UIViewController和第二个之间切换:
UIViewController *newController = ...
UIViewController *oldController = ...
[oldController willMoveToParentViewController:nil];
[self addChildViewController:newController];
[self transitionFromViewController:oldController
toViewController:newController
duration:0.1
options:UIViewAnimationOptionTransitionNone
animations:^(void)
oldController.view.frame = CGRectMake(0 - width, 0, width, height);
newController.view.frame = CGRectMake(0, 0, width, height);
completion:^(BOOL finished)
[newController didMoveToParentViewController:self];
];
【讨论】:
以上是关于iOs 中所有 uiviewcontrollers 中的操作栏的主要内容,如果未能解决你的问题,请参考以下文章
iOS - UIVIewController 中的 UITableView 不显示所有行 [Swift]
如何在 iOS 中以编程方式从基本 UIViewController 向我的所有视图控制器添加视图
使用方法调配一次在所有 UIViewController 实例上更改 iOS13 上的 modalPresentationStyle