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

UINavigationBarButtonItem加载PDF图片不显示文字 需改用SVG格式吗

问题根因

UIBarButtonItem使用图片时,系统默认会将图片调整为模板渲染模式,该模式下会忽略图片自身所有颜色信息,所有非透明像素都会统一渲染为你设置的tintColor(你这里配置的是.systemRed)。如果你的PDF素材内的文字是其他颜色(比如常见的白色文字),会被直接覆盖为红色,和主图案同色就无法正常区分显示,这是最核心的诱因,和你用PDF格式本身没有直接关系。

你自定义的scaleTo缩放方法如果存在逻辑缺陷,比如裁剪区域偏移、插值质量过低,也可能导致文字被裁切或模糊。

解决方案

  • 优先修改图片渲染模式,不需要更换SVG格式:加载图片时指定使用原始渲染模式,保留素材本身的颜色即可,修改后的代码如下:
let liveIcon = UIImage(named: "LiveIcon")?.withRenderingMode(.alwaysOriginal).scaleTo(CGSize(width: 30, height: 20))
liveStreamButtonItem = UIBarButtonItem(image: liveIcon, style: .plain, target: self, action: #selector(self.liveStreamTapped))
liveStreamButtonItem.tintColor = .systemRed
liveStreamButtonItem.isEnabled = false

navigationItem.rightBarButtonItems = [searchBarButtonItem, liveStreamButtonItem]
  • 检查scaleTo方法的实现,确认缩放时没有裁切到素材的文字区域,缩放插值质量设置为适合文字显示的级别。
  • 如果你要更换为SVG格式也可以,iOS 12+及Xcode 12+已原生支持SVG矢量素材,使用逻辑和PDF一致,依然需要注意渲染模式的配置,否则还是会出现同样的文字显示异常问题。

内容的提问来源于stack exchange,提问作者Noah Iarrobino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:24:03