1

使用 Swift 5.1.3、iOS13.3、XCode11.3、

我尝试创建一个自定义的 navigationBar Title 并使用 navigationItem.titleView 来做到这一点。

如果自定义 titleView 尺寸小(大约 40-45 像素),一切正常。原因很可能是因为navigationItem 左右按钮的尺寸也很小。

但是,我的 naviagionBar 设置为一个大标题,我想放置一个更高的自定义 titleView 来填充那个大空间。

我找到了很多自定义 naviagationItem.titleView 的答案(例如下面的代码)。但不幸的是,这些解决方案对更高的高度没有帮助!

这是小高度的解决方案:

var titleView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 40))
var titleImageView = UIImageView(image: UIImage(named: "headerlogo"))
titleImageView.frame = CGRect(x: 0, y: 0, width: titleView.frame.width, height: titleView.frame.height)
titleView.addSubview(titleImageView)
navigationItem.titleView = titleView

如果高度为 150 或 250,则此解决方案不起作用 - 特别是如果自定义 titleView 包含按钮。该按钮不再可单击,因为在自定义 titleView 的下边缘不再识别单击事件!

问题1:如果将item放在大高度自定义navigationItem.titleView中,按钮点击事件将不再被识别。

问题 2:当从 detail-VC 导航回包含大标题自定义 navigationItem.titleView 的 VC 时,我们的自定义 titleView 将完全消失。

如何克服问题 1 和 2 - 这就是这里的问题。感谢您对此的任何帮助。

PS 这是所需结果的说明。navigationItem.titleView 是自定义的,包含一个带有两个元素的stackView(即title-Text 和一个黄色圆形按钮)。自定义的titleView应该放在navigationBar的最底部,但仍然克服了上面描述的问题1和2!

在此处输入图像描述

4

0 回答 0