有没有办法知道iOS是否支持Emoji? [英] Is there a way to know if an Emoji is supported in iOS?
本文介绍了有没有办法知道iOS是否支持Emoji?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在开发一款iOS应用程序,表情符号在其中发挥了重要作用。
In iOS 10.2, new emojis were released.
我敢肯定,如果有人使用iOS 8,他们实际上不会看到这些表情符号。有什么方法可以检测到这一点吗?我正试图动态地建立用户iOS版本支持的所有表情符号的列表,但我遇到了一些麻烦。
推荐答案
澄清:Emoji只是unicode字符空间中的一个字符,因此本解决方案适用于所有字符,而不仅仅是Emoji。
摘要
若要了解给定设备或操作系统上是否有Unicode字符(包括Emoji),请运行下面的unicodeAvailable()
方法。
它的工作原理是将给定字符图像与已知的未定义Unicode字符U+1FFF
进行比较。
unicodeAvailable(),Character
扩展
private static let refUnicodeSize: CGFloat = 8
private static let refUnicodePng =
Character("u{1fff}").png(ofSize: Character.refUnicodeSize)
func unicodeAvailable() -> Bool {
if let refUnicodePng = Character.refUnicodePng,
let myPng = self.png(ofSize: Character.refUnicodeSize) {
return refUnicodePng != myPng
}
return false
}
讨论
所有字符都将呈现为PNG,大小与
中定义的相同(8)static let refUnicodeSize: CGFloat = 8
未定义字符
中计算一次U+1FFF
图像在static let refUnicodePng = Character("u{1fff}").png(ofSize: Character.refUnicodeSize)
帮助器方法可以选择从
创建PNGCharacter
func png(ofSize fontSize: CGFloat) -> Data?
1.示例:测试3个表情符号
let codes:[Character] = ["u{2764}","u{1f600}","u{1F544}"] // ❤️, 😀, undefined
for unicode in codes {
print("(unicode) : (unicode.unicodeAvailable())")
}
2.示例:测试Unicode字符范围
func unicodeRange(from: Int, to: Int) {
for unicodeNumeric in from...to {
if let scalar = UnicodeScalar(unicodeNumeric) {
let unicode = Character(scalar)
let avail = unicode.unicodeAvailable()
let hex = String(format: "0x%x", unicodeNumeric)
print("(unicode) (hex) is (avail ? "" : "not ")available")
}
}
}
帮助器函数:Character
到PNG
func png(ofSize fontSize: CGFloat) -> Data? {
let attributes = [NSAttributedStringKey.font:
UIFont.systemFont(ofSize: fontSize)]
let charStr = "(self)" as NSString
let size = charStr.size(withAttributes: attributes)
UIGraphicsBeginImageContext(size)
charStr.draw(at: CGPoint(x: 0,y :0), withAttributes: attributes)
var png:Data? = nil
if let charImage = UIGraphicsGetImageFromCurrentImageContext() {
png = UIImagePNGRepresentation(charImage)
}
UIGraphicsEndImageContext()
return png
}
►在GitHub上找到此解决方案,并在Swift Recipes上找到详细文章。
这篇关于有没有办法知道iOS是否支持Emoji?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文