我正在尝试将图像设置为大型导航栏上的标题。到目前为止,我可以像在标准导航栏上一样将其显示在顶部中心位置。
我正在尝试用图片替换“所有收件箱”。
此刻我正在得到这样的东西
通过使用self.navigationItem.titleView = UIImageView(image #i ageLiteral(resourceName: “logo pic”))
注意-标题文本“设置”未出现,但徽标/图像在该位置显示为“徽标”。 (我希望图片/徽标位于第一张图片的下方,并且位于左侧)
答案 0 :(得分:0)
好了,您已经可以将图像放置在栏中了,因此现在只需调整视图大小即可使其适合您的期望位置。
通过调整UIImage
的框架大小来执行此操作,因为仅调整UIImageView
的大小在导航栏中不起作用(请参见here)。
编辑:经过一些试验,我设法做到了您想要的。这有点骇人听闻,您可能需要自己找出正确的尺寸值,但我设法实现了这种观点:
这是通过添加名为“容器”的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
正如我所说,这是骇人听闻的,当然不是Apple想要的。此解决方案可能无法在将来的iOS版本中使用。
您还可以将width
的{{1}}和height
设置为container
并从那里进行实验。都是通过反复试验手动找到正确的帧值。
答案 1 :(得分:0)
我正在尝试用图片替换“所有收件箱”
好吧,你不能。大标题是标题;大标题是标题。它是文字。它不能是图像。标题视图可以是图像,但它位于导航栏的中心。您显示的屏幕截图正确;这就是它的外观。结束。停止尝试滥用框架。