You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS Swift4导航栏居中标题左侧添加图片问题求助

嘿,我完全懂你遇到的这个麻烦——想让导航栏标题居中,同时在标题左边放个图标,结果折腾富文本的时候图片总跑到右边,对吧?我之前做项目的时候也踩过这个坑,给你两个实用的解决方案,帮你搞定这个问题:

方案一:用富文本正确控制图片位置

你之前应该是把文字放在了图片前面拼接,所以图片才会跑到右边。只要调整富文本的拼接顺序,先加图片附件,再加文字,就能让图片乖乖待在标题左侧,同时整体居中。完整代码如下:

// 1. 调整图片尺寸
let image = UIImage(named: "user2")!
let newSize = CGSize(width: 30, height: 30)
UIGraphicsBeginImageContextWithOptions(newSize, false, UIScreen.main.scale)
image.draw(in: CGRect(origin: .zero, size: newSize))
let resizedImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()

// 2. 创建图片文本附件,调整垂直对齐
let imageAttachment = NSTextAttachment()
imageAttachment.image = resizedImage
// y值可以根据你的字体大小微调,确保图片和文字垂直居中
imageAttachment.bounds = CGRect(x: 0, y: -4, width: newSize.width, height: newSize.height)

// 3. 先添加图片,再添加标题文字(记得加个空格隔开)
let attributedText = NSMutableAttributedString(attributedString: NSAttributedString(attachment: imageAttachment))
let titleString = NSAttributedString(string: " 我的应用标题")
attributedText.append(titleString)

// 4. 设置导航栏标题View
let titleLabel = UILabel()
titleLabel.attributedText = attributedText
titleLabel.sizeToFit()
navigationItem.titleView = titleLabel

方案二:自定义UIStackView(更易维护)

如果觉得富文本的对齐和样式调整太麻烦,直接用UIStackView把图片和标题Label组合起来是更直观的选择,后续修改样式也更灵活:

// 1. 创建并配置图片View
let imageView = UIImageView(image: UIImage(named: "user2"))
imageView.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
imageView.contentMode = .scaleAspectFit

// 2. 创建标题Label
let titleLabel = UILabel()
titleLabel.text = "我的应用标题"
titleLabel.font = UIFont.systemFont(ofSize: 17, weight: .semibold)
titleLabel.textColor = .label // 适配明暗模式

// 3. 用StackView组合图片和文字
let stackView = UIStackView(arrangedSubviews: [imageView, titleLabel])
stackView.axis = .horizontal
stackView.spacing = 8 // 图片和文字的间距,可按需调整
stackView.alignment = .center

// 4. 设置为导航栏标题View
navigationItem.titleView = stackView
stackView.sizeToFit()

这个方案的好处是,不管你后续要调整图片大小、文字样式还是间距,直接修改对应的控件属性就行,不用跟富文本的各种属性较劲。

你可以根据自己的需求选其中一种,亲测都能实现你要的“标题居中+左侧图片”效果~

内容的提问来源于stack exchange,提问作者Android teem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:43:20