如何在Swift Xcode中创建自定义导航栏?

Cas*_*ert 3 xcode uinavigationcontroller ios swift

我正在为我的iOS毕业项目开发聊天应用程序。我设计了以下导航栏:

在此处输入图片说明

现在,我正在尝试在Xcode项目中开发以上图形,但是我不知道这是否是实现此目标的正确方法,并且不像图形那样获得它。

我正在使用xib文件,使用该文件ViewController.swift的实例加载该文件。比将其添加为titleViewnavigationItem

let helperView = HelperView()
navigationItem.titleView = helperView
Run Code Online (Sandbox Code Playgroud)

这是上述代码段的结果:

在此处输入图片说明

此结果的问题是它与左栏按钮项重叠,而我仍然不知道的另一个问题是,如果消息气泡可以具有动态高度,则当它具有多行时(最多3行) 。

在此处输入图片说明

是否有人在Xcode中具有这种设计的经验,这是执行此操作的正确方法,还是有更好的方法来实现?也许是自定义的UINavigationController类?

Tj3*_*j3n 5

尝试创建所需的整个导航视图,这意味着宽度等于该视图,然后尝试使用此代码添加它

    navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    navigationController?.navigationBar.shadowImage = UIImage()
    navigationController?.navigationBar.backgroundColor = .clear

    navigationController?.view.insertSubview(subview, belowSubview: navigationController?.navigationBar)
Run Code Online (Sandbox Code Playgroud)

这将使您的导航栏变得不可见,但仍显示栏按钮

更新,由dimpiax

但最好重写您的UINavigationController类,并在其中设置视图 viewDidLoad

navigationBar.shadowImage = UIImage()
navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationBar.backgroundColor = .clear
Run Code Online (Sandbox Code Playgroud)

并依赖于viewController的视图–显示特定视图。