我正在使用 Swift 3 开发 iOS 应用程序。
在此应用程序中,我列出了所有可用的字体(系统提供),但我也想列出它们的所有可用字符。
例如,我正在使用 Font Awesome,我希望用户能够从列表中选择任何字符/符号。我怎样才能做到这一点?
这就是我获取字体数组的方法。如何获取所选字体的所有字符的数组?
UIFont.familyNames.map({ UIFont.fontNames(forFamilyName: $0)}).reduce([]) { $0 + $1 }
对于每个 UIFont,您必须获取该字体的字符集。例如,我首先采用 UIFont。
let firsttFont = UIFont.familyNames.first
let first = UIFont(name: firsttFont!, size: 14)
let fontDescriptor = first!.fontDescriptor
let characterSet : NSCharacterSet = fontDescriptor.object(forKey: UIFontDescriptorCharacterSetAttribute) as! NSCharacterSet
然后,使用此扩展获取该 NSCharacterSet 的所有字符:
extension NSCharacterSet {
var characters:[String] {
var chars = [String]()
for plane:UInt8 in 0...16 {
if self.hasMemberInPlane(plane) {
let p0 = UInt32(plane) << 16
let p1 = (UInt32(plane) + 1) << 16
for c:UTF32Char in p0..<p1 {
if self.longCharacterIsMember(c) {
var c1 = c.littleEndian
let s = NSString(bytes: &c1, length: 4, encoding: String.Encoding.utf32LittleEndian.rawValue)!
chars.append(String(s))
}
}
}
}
return chars
}
}
(Ref: NSArray 来自 NSCharacterset https://stackoverflow.com/questions/15741631/nsarray-from-nscharacterset/15742659#15742659)
所以,最后,只需调用characterSet.characters
获取所有字符(字符串中)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)