你精心准备了一张带透明背景的 PNG 图片作为 Apple Touch Icon。在电脑上看,它清晰锐利。但当你把它添加到 iPhone 主屏幕时,Safari 却给你的图标加了一个白色方块,就像贴纸贴在了白纸上。

我踩过这个坑。明明每一步都做对了,结果却让人抓狂。其实修复方法比你想象的要简单得多,而且不需要重新设计图标。

快速修复:加上正确的 HTML 标签

你的 apple touch icon 透明背景 变成白色方块,最常见的原因是 iOS Safari 没有找到正确的图标,回退到了默认样式。你很可能漏掉了 rel='apple-touch-icon' 标签,或者尺寸不对。

直接上代码:

<link rel='apple-touch-icon' sizes='180x180' href='/apple-touch-icon-180x180.png'>

就这一行。加上 sizes='180x180' 属性,告诉 iOS 使用这个特定文件。没有它,Safari 可能会忽略你的图标,直接显示一个白色占位符。

为什么是 180x180?

Apple 推荐现代 iPhone(iPhone 6s 及以后)使用 180x180 像素。旧设备也能优雅降级。如果你需要生成多个尺寸,可以参考我们的 Apple Touch Icon 尺寸指南——但说实话,180x180 基本覆盖了所有情况。

根本原因:透明背景为什么会失效

即使 HTML 写对了,你仍然可能看到白色背景。真正的原因通常有三个:

如何验证 PNG 的透明背景

在浏览器里打开你的图标。如果看到棋盘格图案,说明透明背景没问题。如果看到纯白或纯灰背景,那你的 PNG 就有问题。回到设计工具,重新导出时记得勾选“透明背景”。

预防技巧:彻底告别白色方块

修好之后,你肯定不想它再出问题。以下是我经过实战检验的方法:

用 SVG 做 Apple Touch Icon(没错,真的可以)

iOS 14 及以上版本支持 SVG 格式的 Apple Touch Icon。SVG 原生支持透明背景——没有白色方块,没有 alpha 通道问题。代码如下:

<link rel='apple-touch-icon' sizes='180x180' href='/apple-touch-icon.svg' type='image/svg+xml'>

我自己的网站换成 SVG 已经半年了,一次问题都没出过。唯一的缺点是旧版 iOS(iOS 13 及以下)不支持 SVG,所以最好保留一个 PNG 作为备选。

缓存清理:重命名文件

每次更新图标时,记得改文件名。别用 apple-touch-icon.png,改成 apple-touch-icon-v2.png。这样 iOS 就会下载新文件,而不是用缓存里那个带白色背景的旧版本。

在真机上测试

别信模拟器。直接把你的网站添加到 iPhone 主屏幕,看看图标效果。如果显示白色方块,你马上就能发现。完整的检查清单可以参考我们的 Apple Touch Icon 完整设置指南

那 'precomposed' 属性呢?

你可能见过一些老教程推荐用 rel='apple-touch-icon-precomposed'。这是给 iOS 6 及更早版本用的,当时系统会给图标加一个光泽效果。现代 iOS 已经忽略这个属性了。别用它——纯属多余。

白色方块问题,十有八九是标签缺失、缓存了旧图标、或者 PNG 不是真正的透明背景。搞定这三个问题,你的图标在所有 iPhone 上都会显示得原汁原味。