我的应用程序中有一个日期倒计时,我想利用旧金山的等宽数字功能.我目前使用此代码检索字体:
UIFontDescriptor *countdownFontDescriptor = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody]; NSArray *additionalFontSettings = @[@{UIFontFeatureTypeIdentifierKey: @(kNumberSpacingType),UIFontFeatureSelectorIdentifierKey: @(kMonospacedNumbeRSSelector)},@{UIFontFeatureTypeIdentifierKey: @(kTextSpacingType),UIFontFeatureSelectorIdentifierKey: @(kMonospacedTextSelector)}]; countdownFontDescriptor = [countdownFontDescriptor fontDescriptorByAddingAttributes: @{UIFontDescriptorFeatureSettingsAttribute: additionalFontSettings}]; UIFont *desiredFont = [UIFont fontWithDescriptor:countdownFontDescriptor size:14];
我得到等宽数字,因为它们应该出现,但我的字符串中有分号,用于分隔数字.偶尔我会看到这个角色的举动.如何才能使分号的宽度保持不变? (这就是我尝试添加kTextSpacingType的原因)
解决方法
不确定,但你试过看(从Xcode 9.1测试版开始)
/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreText.framework/Headers/SFNTLayoutTypes.h.
我无法在那里看到一种方法,但也许其他人可以.