【问题标题】:custom navigation bar with image and two titles in iOSiOS中带有图像和两个标题的自定义导航栏
【发布时间】:2020-02-10 21:41:55
【问题描述】:

我正在尝试用两个标题和一个图像来实现以下导航栏:

大标题变体:

小标题变体:

我尝试对UINavigationBar 进行子类化并向其添加子视图,但它们根本没有渲染。 我尝试在情节提要中设置 titleView,但似乎 titleView 的高度受到限制。

实现此自定义导航栏的正确方法是什么?

我也试过这个(并将 Storyboard 中的 viewController 设置为该类):

class NavViewController: UINavigationController {

    var titleView = UIView()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationBar.topItem?.titleView?.backgroundColor = .gray
        titleView.frame = CGRect(x: 0, y: 0, width: 100, height: 300)
        self.navigationBar.topItem?.titleView = titleView
    }
}

【问题讨论】:

  • 你试过 larageNavigationBar 属性,是否会提供使导航栏大小变大和变小的功能?也不要在 titleView 上添加它,而是在导航栏上添加它,因为 titleView 具有固定大小,不会根据内容更改

标签: ios swift uinavigationbar large-title preferslargetitles


【解决方案1】:

ViewControllerin viewDidLoad 内,添加self.navigationController?.navigationBar.addSubview(imageView)。 (不需要子类化) UINavigationbar 内甚至还支持 AutoLayout,非常适合动画。

【讨论】:

    【解决方案2】:

    在 xib 文件中单独设计您的自定义视图,然后将该 xib 设置为导航栏的标题视图

    self.navBar.topItem?.titleView = logoImage
    

    对大标题执行此操作,对于较小的标题仅在 titleView 中填充图像。

    【讨论】:

    • 我尝试使用带有背景颜色的简单 UIView()。在 NavigationController 类中,我设置了该视图的框架并将其设置为 titleView,但不会呈现任何内容。我更新了问题,以便您可以更好地看到我所做的。
    猜你喜欢
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多