Las*_*sse 1 macos cocoa objective-c nsfont swift
我试图在 Swift 中NSFontSymbolicTraits按位比较和。NSFontBoldTrait
在 Objective-C 中,它会像这样完成:
BOOL isBold = (fontDescriptorSymbolicTraits & UIFontDescriptorTraitBold);
Run Code Online (Sandbox Code Playgroud)
所以我想在 Swift 中应该是这样的:
let isBold:Bool = font.fontDescriptor.symbolicTraits & NSFontBoldTrait
Run Code Online (Sandbox Code Playgroud)
...但是这会导致以下错误:
无法使用类型为“(NSFontSymbolicTraits, Int)”的参数列表调用“&”
有人知道我错过了什么吗?任何帮助将不胜感激。
注意事项:
NSFontDescriptor和其他NSFont相关类。NSFont*Trait常量在 Swift 中的实现方式不同?甚至不确定是否是这样。在 Swift 中,NSFontSymbolicTraits是 的类型别名UInt32。因此,要检查特定特征是否存在,您需要将按位的结果&与零进行比较。不幸的是,各个约束已作为 type 导入Int,因此您还需要将它们转换为正确的类型:
let isBold = 0 != (font.fontDescriptor.symbolicTraits & NSFontSymbolicTraits(NSFontBoldTrait))
Run Code Online (Sandbox Code Playgroud)
如果您想在 iOS(而不是 OS X)中执行此操作,UIFont则有不同的实现。UIFontDescriptorSymbolicTraits是 a RawOptionSetType,因此您将您的结果&与进行比较nil:
let isBold = nil != (font.fontDescriptor().symbolicTraits & UIFontDescriptorSymbolicTraits.TraitBold)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1489 次 |
| 最近记录: |