1

我正在尝试将图像设置为大型导航栏上的标题。到目前为止,我可以让它在顶部中心显示徽标,就像它是标准导航栏一样。

我正在尝试用图像替换“所有收件箱”。

在此处输入图像描述

目前我通过使用得到这样的东西self.navigationItem.titleView = UIImageView(image #i ageLiteral(resourceName: “logo pic”)) 在此处输入图像描述

注意 - 标题文本“设置”不会出现,但徽标/图像在显示为“徽标”的位置。(我希望图像/徽标像第一张图片一样位于下方和左侧)

4

1 回答 1

2

好吧,您已经可以将图像放置在栏中,所以现在只需调整视图大小,使其适合您想要的位置。

通过调整 框架的大小来做到这一点UIImage,因为UIImageView单独调整大小在导航栏中不起作用(请参见此处)。

编辑:经过一些实验,我设法做你想做的事。这有点hack-y,您可能需要为自己找出正确的尺寸值,但我设法实现了这个观点:

标志位置在正确的位置

这是通过添加一个UIView标题为“容器”作为 的titleView,然后包含一个UIImageView. 虽然“容器”主要限于栏的“顶部”部分,但UIImageView现在可以在导航栏内自由移动。你可以看到这有点骇人听闻:

徽标位于通常的标题文本上方,容器为黑色

在此图像中,您可以看到容器UIView具有黑色背景色。它不能像titleView. 检查视图层次结构会显示徽标的位置:

视图层次结构

这是通过以下代码实现的:

let logo = UIImage(named: "logo")

let container = UIView(frame: CGRect(x: 0, y: 0, width: 182, height: 132))
container.backgroundColor = UIColor.clear

let imageView = UIImageView(frame:  CGRect(x: -132, y: 2, width: 182, height: 132))
imageView.contentMode = .scaleAspectFit
imageView.image = logo

container.addSubview(imageView)

self.navigationItem.titleView = container

正如我所说,这是 hack-y,当然不是 Apple 的意图。此解决方案可能不适用于未来版本的 iOS。

您还可以从那里设置和width进行height实验。这一切都是关于通过反复试验手动找到正确的帧值。container0

于 2018-10-14T09:14:18.717 回答