如何使字体粗体,解开任何字体样式

时间:2013-12-02 06:47:30

标签: ios uifont

任何人都可以解释我们如何制作任何字体系列字体,粗体或非粗体+斜体或非斜体+下划线或非下划线。无处不在,我得到的方法是进行更改但是在系统字体上。我甚至试过给NSAttributed字符串赋予2个属性  大胆的  2.支持的字体系列列表中的字体系列

但它没有用。在此先感谢。

4 个答案:

答案 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是您的标签名称。