我在视频上有一个正在运行的计时器,格式为0:00:00。我希望字符1-9都具有相同的宽度,以便标签在定时器更新时不会移动。我从苹果幻灯片中提取了这段代码,但我没有运气。除了" 1"之外,每个角色似乎都是成比例的。我很难找到有关此问题的任何示例或文档。我在UILabel上使用下面方法的返回值调用setFont
。我尝试使用的字体是GothamNarrow-Book。我传入@" GothamNarrow-Book"这个方法。
-(UIFont*) getProportionalFontForTimerWithFont:(NSString*)fontName WithRatio:(CGFloat) fontRatio{
UIFont *const existingFont=[UIFont fontWithName:fontName];
UIFontDescriptor *const existingDescriptor=[existingFont fontDescriptor];
NSDictionary *const timeFeatureSettings=@{
UIFontDescriptorFeatureSettingsAttribute:@[
@{
UIFontFeatureTypeIdentifierKey: @(kNumberSpacingType),
UIFontFeatureSelectorIdentifierKey:@(kProportionalNumbersSelector)
},
@{
UIFontFeatureTypeIdentifierKey: @(kCharacterAlternativesType),
UIFontFeatureSelectorIdentifierKey:@(1)
}]
};
UIFontDescriptor *const proportionalDescriptor=[existingDescriptor fontDescriptorByAddingAttributes:timeFeatureSettings];
UIFont* proportionalFont=[UIFont fontWithDescriptor:proportionalDescriptor size:[existingFont pointSize]];
return proportionalFont;
}
答案 0 :(得分:2)
我误解了比例意味着什么。将密钥从比例更改为等宽函数修复了我的问题。
-(UIFont*) getProportionalFontForTimerWithFont:(NSString*)fontName WithRatio:(CGFloat) fontRatio{
UIFont *const existingFont=[UIFont fontWithName:fontName];
UIFontDescriptor *const existingDescriptor=[existingFont fontDescriptor];
NSDictionary *const timeFeatureSettings=@{
UIFontDescriptorFeatureSettingsAttribute:@[
@{
UIFontFeatureTypeIdentifierKey: @(kNumberSpacingType),
UIFontFeatureSelectorIdentifierKey:@(kMonospacedNumbersSelector)
},
@{
UIFontFeatureTypeIdentifierKey: @(kCharacterAlternativesType),
UIFontFeatureSelectorIdentifierKey:@(1)
}]
};
UIFontDescriptor *const proportionalDescriptor=[existingDescriptor fontDescriptorByAddingAttributes:timeFeatureSettings];
UIFont* proportionalFont=[UIFont fontWithDescriptor:proportionalDescriptor size:[existingFont pointSize]];
return proportionalFont;
}
答案 1 :(得分:0)
由于您总是画出固定数量的字符,为什么不只是手动定位和绘制每个字符?你甚至可以让每个人拥有自己的UILabel或其他控件。
答案 2 :(得分:0)
第一步:固定标签
只需使用自动布局固定高度和宽度以及右下角。这样可以确保您的标签不会移动。
第二步:修改字体
在storyboard中,将UILabel的自动收缩属性设置为最小字体比例。然后设置你想要的%大小,你应该很高兴。