iOS中导航栏布局的项目太多

Posted

技术标签:

【中文标题】iOS中导航栏布局的项目太多【英文标题】:Too Many Items for Nav Bar Layout in iOS 【发布时间】:2017-07-27 21:10:26 【问题描述】:

我需要一些帮助来确定如何修复 ios 应用中导航栏的布局。向给定屏幕的“子”视图添加导航时,到目前为止,我的方法是将按钮添加到 UINavigation 项的“leftBarButtonItems”集合中。只要按钮的数量不超过 3 或 4 个,一切都很好。

不幸的是,我现在有一个需要额外按钮的屏幕。一切似乎都构建得很好,但是当我实际运行应用程序时,我最终会遇到这样的混乱:

有没有更好的方法来布局带有导航和工具栏按钮的 UI?如果将按钮放在导航栏中实际上是正确的方法,我需要做什么才能使布局处理内容无法容纳的情况?

【问题讨论】:

如果你真的需要按钮,你最好隐藏后退按钮的标题(ALASKA VISION CLINIC...)。 See this 我同意@Ryan 的观点并且过去曾这样做过。但是您也可以尝试将标题部分缩写为ALASKA (#100081) 【参考方案1】:

我不会为添加 any 额外按钮而烦恼。用户期望大多数应用程序以类似的方式运行,并且(虽然这在技术上是可行的)这是一件不寻常的事情。

Apple's HIG 状态:

避免过多的控件使导航栏拥挤。一般来说,导航栏不应包含视图的当前标题、后退按钮和一个管理视图内容的控件。

而且,即使您选择忽略 Apple 的 HIG,这对可访问性肯定也不利。您的用户可以(并且将会)使用 Dynamic Type 更改文本大小 - 因此,您断言“按钮数量不超过 3 或 4 个”就可以的断言将被某人证明是错误的。

您最好添加一个工具栏,或者寻找其他方式来提供这些功能。

【讨论】:

是的,我并没有真正考虑过工具栏,但这看起来像是要走的路。现在问题变成了如何组织按钮。在五个按钮中,三个导航到子视图并且明显属于工具栏。其他两个,但是我不确定。一个是取消当前订单的“删除”按钮。另一个是提交订单的“结帐”按钮。其中哪些(如果有的话)属于工具栏,哪些应该留在导航栏中?【参考方案2】:

导航栏的左侧通常有上一个视图的标题。右侧包含一个控件,如编辑或完成按钮,用于管理活动视图中的内容。

Navigation bar Example

Apple 文档建议避免使用过多控件将导航栏挤满。

导航栏应该只包含视图的当前标题、一个后退按钮和一个管理视图内容的控件。

返回按钮你应该使用标准的。至于文本字段,它应该有足够的空间。如果导航栏中的项目很拥挤,请考虑通过在UIBarButtonItem 中使用UIBarButtonSystemItemFixedSpace 常量值插入固定空间来分隔。 欲了解更多信息,请访问以下link。

当您需要 3 个或更多项目时,可以使用导航栏或工具栏。您可以结合导航栏和工具栏。有关更多信息,请使用工具栏上的 Apple 文档。

【讨论】:

以上是关于iOS中导航栏布局的项目太多的主要内容,如果未能解决你的问题,请参考以下文章

iOS 导航栏

IOS。无论导航栏如何,都进行布局约束以粘合到状态栏底部 + X

iOS 系统根据导航栏和状态栏自动修改布局

带有透明/模糊导航栏的 iOS 7 视图控制器布局问题

导航栏的那些事

主/详细故事板项目中的 IOS 导航栏在 ipad 上是透明的,但在 iphone 上不透明