如何解决UIButton 的系统映像出现在 iOS14 中,但不在 iOS13 中 ✅ 将此错误用作功能!1.向后兼容2.向前兼容!总结一下:
我为 UIButtons 和标签栏中设置了系统图像。这适用于 iOS 14,但在 iOS 13 上图像丢失。
iOS 13 上系统映像丢失的原因是什么?
详情:
我有一个按钮,其图像属性在故事板中设置为“square.and.arrow.up”。 (见下面的截图) 该图像在 iOS 14 上显示,但在 iOS 13 上不显示(请参见下面的屏幕截图。模拟器重叠)
标签栏项目也会发生类似的行为。 (请参阅下面的其他屏幕截图)
Xcode 是 12.5,MacOS 11.2.3,iOS 模拟器 13.6 和 14.5。 这也发生在设备上,而不仅仅是在模拟器中。
SF Symbols App 声称该图标自 iOS 13+ 起可用。
感谢任何帮助:-)
解决方法
好像是个bug?。
✅ 将此错误用作功能!
虽然这是一个错误,但总是为这些类型的正在进行的事情提供后备是一个很好的做法。
所以尝试导出符号(文件 -> 导出..)并将其作为资产导入到资产目录中。
请注意虽然 Xcode 支持导入的符号,但您可以考虑为较旧的 iOS 设备使用单独的图标文件(如 PDF)。
除了更可靠之外,它还会给您的项目带来一些其他好处:
1.向后兼容
由于它使用捆绑包中的嵌入资源,因此它们甚至可以在 iOS 12 及更低版本中使用。
2.向前兼容!
SF Symbols.app 的所有版本都以测试版 应用程序的形式出现,Apple 不断地改变惯例和规则以及创建和使用这些符号的其他方面。
例如,看看这个命名约定:
如您所见,此符号的名称从 iOS 15 开始更改,以后旧代码将不再显示!
3.更广泛的支持
您可以在不直接支持使用符号的情况下使用这些导出的符号(例如早期版本不支持的 function onPause() {
clearInterval(inter);
let button = document.querySelector('#pause')
button.innerText = "Resume";
button.setAttribute('onclick','onResume()');
}
function onResume() {
let button = document.querySelector('#pause')
button.innerText = "Pause";
button.setAttribute('onclick','onPause()');
inter = setInterval(timer,1000);
}
和 here is the full example)
总结一下:
因此,始终备份符号并在出现问题时退回到它们是一个不错的选择...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。