在 iOS 中添加应用程序范围的标题视图的最佳实践

Posted

技术标签:

【中文标题】在 iOS 中添加应用程序范围的标题视图的最佳实践【英文标题】:Best practice to add an Application wide Header View in iOS 【发布时间】:2012-07-24 00:28:53 【问题描述】:

假设我的主视图控制器将是一个带有其他子视图控制器的标签栏(即第一个将是导航控制器,第二个将是 uiviewcontroller 的子类等)

现在我想添加一个静态标题视图(将至少包含一个徽标 uiimageview 像网站)

那么实现这一目标的最佳做法是什么?

【问题讨论】:

只是一个警告,引用 HIG:“避免占用人们关心的内容的空间。例如,在屏幕顶部显示第二个持久栏,除了显示品牌之外什么都不做资产意味着内容的空间更小。考虑其他不那么侵入性的方式来显示普遍的品牌,例如巧妙地自定义屏幕背景。” 【参考方案1】:

编辑:正如 Mark Adams 在下面的 cmets 中解释的那样,这不是一个好策略。我会留下它作为不做什么的说明。


“最佳实践”是一个冒险的术语,但我立即想到的是让您的 UITabBarController 成为父 UINavigationController 的根且唯一的视图控制器。然后你可以在导航栏中放任何你喜欢的标志UIImageView

【讨论】:

UITabBarController 不应该以这种方式使用。它的类引用声明标签栏控制器只应该安装在UIWindow 的实例中。在另一个视图控制器中嵌入标签栏控制器可能会导致一些非常奇怪的布局行为。【参考方案2】:

如果您不打算使用 UINavigationBar 样式,那么我建议您继承 UIView 并创建您的自定义视图,并使用简单的实现和偏移值将其添加到您的每个 UIViewControllers。这很麻烦,但它避免了在您的项目中添加不必要的UINavigationControllers

至于最佳实践,您应该始终将UITabBarController 作为窗口的根,而不是将UINavigationControllerUITabBarController 作为根。

另外,我很欣赏其他海报的名字。

【讨论】:

以上是关于在 iOS 中添加应用程序范围的标题视图的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

ios的可扩展单元格表格视图最佳实践

iOS NavigationController - 最佳实践

iOS - 为帖子 + 评论数据模型设置视图控制器的最佳实践是啥?

应用程序中多个 UIWindow 的最佳实践

ios 最佳实践 - 导航和选项卡控制器以及推送/弹出

在所有 ViewControllers swift ios 11 中添加背景图像的最佳实践