子类化 UINavigationBar 以具有标准的视觉格式

Posted

技术标签:

【中文标题】子类化 UINavigationBar 以具有标准的视觉格式【英文标题】:Subclassing UINavigationBar to have standard visual format 【发布时间】:2016-07-11 23:58:50 【问题描述】:

我们当前的设计规范目前涉及一个 UINavigationBar,其中 topItem/barItem 具有标准间距,标题也具有标准字体。

这样做的最佳做法是什么?我正在考虑执行以下操作:

    创建一个 UINavigationBar,其中 topItem 和 barItem 对象的大小尺寸设置为自动布局约束,所有这些都以编程方式完成。

    上述情况不要使用故事板,只需在代码中定义所有约束即可。

    在实际的视图故事板中,让所有带有 UINavigationBar 的视图都使用这个子类。

这行得通吗?这是最佳做法吗?

【问题讨论】:

您必须继承 UINavigationBar 并重新实现所有内容。 UINavigationController 支持自定义导航栏类​​。 【参考方案1】:

我现在使用应用程序并以这种方式解决了同样的问题:

App 有 4 种类型的 UINavigationBar。我创建了继承自 UINavigationBar 的 BaseNavBar。在 .xib 中,我创建了 4 个 UINavigationBar 并将其元素(titleLabel、titleLabel2)连接到 BaseNavBar.h,并将按钮(从 2 到 4)的操作连接到 BaseNavBar.m。我在 xib 中创建的所有设计。

我创建了继承自 UIViewController 的 BaseViewContoller。在 viewDidLoad 中,我初始化所需类型的 BaseNavBar 并将其元素分配给 self.navigationItem。

在大多数情况下,BaseViewContoller 决定它必须使用哪种类型的 BaseNavBar,但在 ViewController(继承自 BaseViewContoller)中我可以更改此类型。

在此之后,我创建了新的 ViewController,不再担心 UINavigationBar。

如果我需要更改所有 UINavigationBar 中的某些内容 - 我会在一个地方进行。

【讨论】:

以上是关于子类化 UINavigationBar 以具有标准的视觉格式的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UINavigationBar 在顶部偏移 1 个像素

更改 UIActivityViewController UINavigationBar 颜色

在 UINavigationController 子类中设置 UINavigationBar 子类

如何完全以编程方式添加 UINavigationBar?

获取 UINavigationBar 委托以允许“返回”,并带有漂亮的动画

子类化 Flask 可插拔视图以实现可扩展功能的最佳方式