子类化 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 子类