任何人都可以解释我们如何制作任何字体系列字体,粗体或非粗体+斜体或非斜体+下划线或非下划线。无处不在,我得到的方法是进行更改但是在系统字体上。我甚至试过给NSAttributed字符串赋予2个属性 大胆的 2.支持的字体系列列表中的字体系列
但它没有用。在此先感谢。
答案 0 :(得分:6)
试试这个
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];
UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold];
UIFontDescriptor *symbolicFontDescriptor1 = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitMonoSpace];
NSString *text = @"iOS 7";
if(some condition){
CGSize fontSize = [text sizeWithAttributes:@{NSFontAttributeName:[UIFont fontWithDescriptor:symbolicFontDescriptor size:17.0f]}];
}
else{
CGSize fontSize = [text sizeWithAttributes:@{NSFontAttributeName:[UIFont fontWithDescriptor:symbolicFontDescriptor1 size:17.0f]}];
}
答案 1 :(得分:0)
你不能用几行代码来做。普通字体及其粗体版本是完全分开的(即它们就像两个不相关的字体),如果您查看iosfonts,则命名不一致。有些字体没有粗体版本,有些字体有几个粗体版本!
解决方案(需要一点努力,但肯定有效):创建一对字体名称列表,如下所示
{"ArialHebrew", "ArialHebrew-Bold"},
{"AvenirNext-Regular", "AvenirNext-Bold"},
...
使用常规版本(左侧)填充字体列表。如果用户希望将其设为粗体,则切换到粗体版本(右侧版本)。
我的建议是限制用户的选择数量(就像iOS一样):您不需要从iosfonts复制整个列表!只是一些受欢迎的就足够了。
答案 2 :(得分:0)
这对你的钱包来说可能不够通用,但也许它会帮助别人
+ (UIFont *)whateverInvertedBoldnessFontFromFont:(UIFont *)font pointSize:(CGFloat)pointSize
{
NSString *customFontFamilyName = @"Whatever";
NSString *ibFontName = font.fontName;
NSString *customFontStyle = nil;
if ([ibFontName rangeOfString:@"Bold"].location != NSNotFound) {
customFontStyle = @"Regular";
}
else {
customFontStyle = @"Bold";
}
UIFont *customFont = [UIFont fontWithName:[NSString stringWithFormat:@"%@-%@", customFontFamilyName, customFontStyle] size:pointSize];
return customFont;
}
不幸的是,这是非常脆弱的,并且在源和目的地时可靠地工作 字体系列是已知的
答案 3 :(得分:0)
如果要以编程方式设置,则必须使用xCode(iOS)支持的字体进行检查。 如果你想对任何字体做粗体,那么你必须使用:
UIFont* boldFont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
[myLabel setFont:boldFont];
其中myLabel是您的标签名称。