我正在尝试将一些使用UIFont和CTFont的代码移植到Swift,并且(在Objective中成功地)使用简单的桥接转换从一个转换到另一个,反之亦然。
例如,考虑以下代码(在UIFontDescriptor类别中):
UIFont *font = [UIFont fontWithDescriptor:self size:0.0];
NSArray *features = CFBridgingRelease(CTFontCopyFeatures((__bridge CTFontRef)font));我还没有弄清楚如何用Swift来表达这一点,这样才能真正编译。至少以下几点没有:
let font = UIFont(descriptor:self, size: 0.0)
let features = CTFontCopyFeatures(font as CTFont)错误:“UIFont”不能转换为“CTFont”
发布于 2015-10-07 14:11:57
显然,这已经在Swift和/或CoreText的后期版本中得到了修正。至少现在它在我使用Xcode 7.0.1的测试中起作用了。
发布于 2014-06-27 17:03:09
尝尝这个。你不能只是强迫从一种类型到另一种类型的值。但是,如果您从描述符和大小创建了一个CTFont,那么即使您没有包含用于转换的矩阵( nil参数),它似乎也为您提供了一个有效的数组。
let font = CTFontCreateWithFontDescriptor(descriptor, 0.0, nil)
let features: NSArray = CTFontCopyFeatures(font)至于创建CTFontDescriptor,我会根据最初给出的内容使用CTFontDescriptorCreateWithNameAndSize或CTFontDescriptorCreateWithAttributes。后者采用一个简单的NSDictionary,前者只使用字体名称和大小。
要从现有字体(称为originalFont)开始,只需执行以下操作即可获得描述符:
let font = CTFontCreateWithName(originalFont.fontName as CFStringRef,
originalFont.pointSize as CGFloat, nil)https://stackoverflow.com/questions/24456863
复制相似问题