• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 使用自定义字体时,UITextView 属性文本不起作用

[复制链接]
菜鸟教程小白 发表于 2022-12-12 11:17:52 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 UITextView 并通过代码设置其字体和属性文本。

案例 1: 自定义字体 - 是属性文本 - 否

enter image description here

textView 文本以自定义字体显示。

我想要带有自定义字体的属性文本,即 Message : 在这种情况下应该加粗。

案例 2: 自定义字体 - 是属性文本 - 是

enter image description here

只有属性文本(粗体文本)以自定义字体显示。

我的代码是:

- (void)loadTextView
{
    _textView.text=NSLocalizedString(@"more_info_text",nil);
    _textView.font=[UIFont fontWithName"BurbankSmall-Medium" size:16];

    NSRange rangeBold  = [_textView.text rangeOfString"Examples of invalid characters:"];
    NSRange rangeBold2 = [_textView.text rangeOfString"Restricted text:"];
    NSRange rangeBold3 = [_textView.text rangeOfString"Message :"];

    UIFont *fontText = [self boldFontWithFont:_textView.font];
    NSDictionary *dictBoldText = [NSDictionary dictionaryWithObjectsAndKeys:fontText, NSFontAttributeName, nil];

    NSMutableAttributedString *mutAttrTextViewString = [[NSMutableAttributedString alloc] initWithString:_textView.text];
    [mutAttrTextViewString setAttributes:dictBoldText range:rangeBold];
    [mutAttrTextViewString setAttributes:dictBoldText range:rangeBold2];
    [mutAttrTextViewString setAttributes:dictBoldText range:rangeBold3];

    [_textView setAttributedText:mutAttrTextViewString];

    _textView.editable=NO;
    _textView.selectable=NO;
}

- (UIFont *)boldFontWithFontUIFont *)font
{
    UIFontDescriptor * fontD = [font.fontDescriptor
                                fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold];
    return [UIFont fontWithDescriptor:fontD size:16];
}

当我评论 setAttributedText:mutAttrTextViewString 行时,evrything 会以自定义字体显示。当我取消注释时,只有属性文本以自定义字体显示,其余以默认字体显示。

为什么会这样?如果这不可能,我正在考虑将 html 内容作为属性文本包含在内,但我想在最坏的情况下将其视为一个选项。



Best Answer-推荐答案


有一个相关问题here .
主要问题是 UITextViewfont (UIFont) 属性将应用于其 text (NSString) 属性(也称为“纯文本”)而不是 attributedText (NSAttributedString)。

所以你必须自己为你的 NSAttributedString 应用“正常”字体效果。

所以只需替换:

NSMutableAttributedString *mutAttrTextViewString = [[NSMutableAttributedString alloc] initWithString:_textView.text];

与:

NSMutableAttributedString *mutAttrTextViewString = [[NSMutableAttributedString alloc] initWithString:_textView.text attributes{NSFontAttributeName:[UIFont fontWithName"BurbankSmall-Medium" size:16]}];

关于ios - 使用自定义字体时,UITextView 属性文本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37120535/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap