为了账号安全,请及时绑定邮箱和手机立即绑定

黑体和非粗体文字在一个单一的UILabel?

黑体和非粗体文字在一个单一的UILabel?

慕妹3242003 2019-07-03 13:43:28
黑体和非粗体文字在一个单一的UILabel?如何在uiLabel中同时包含粗体和非粗体文本?我宁愿不使用UIWebView.。我也读过使用NSAttributedString可能是可能的,但是我不知道如何使用它。有什么想法吗?苹果公司在他们的几个应用程序中实现了这一点;
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

在UILabel上尝试一个类别:

下面是它的用法:

myLabel.text = @"Updated: 2012/10/14 21:59 PM";[myLabel boldSubstring: @"Updated:"];[myLabel boldSubstring: @"21:59 PM"];

下面是分类

UILabel+Boldify.h

- (void) boldSubstring: (NSString*) substring;- (void) boldRange: (NSRange) range;

UILabel+Boldify.m

- (void) boldRange: (NSRange) range {
    if (![self respondsToSelector:@selector(setAttributedText:)]) {
        return;
    }
    NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithAttributedString:self.attributedText];
    [attributedText setAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:self.font.pointSize]} range:range];

    self.attributedText = attributedText;    }- (void) boldSubstring: (NSString*) substring {
    NSRange range = [self.text rangeOfString:substring];
    [self boldRange:range];}

请注意,这将只在iOS 6和更高版本中工作。在iOS 5和更早版本中,它将被忽略。


查看完整回答
反对 回复 2019-07-03
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

有基于bbrame分类的分类。它的工作原理类似,但允许您使用相同的方法。UILabel多次累积结果。

UILabel+Boldify.h

@interface UILabel (Boldify)- (void) boldSubstring: (NSString*) substring;- (void) boldRange: (NSRange) range;@end

UILabel+Boldify.m

@implementation UILabel (Boldify)- (void)boldRange:(NSRange)range {
    if (![self respondsToSelector:@selector(setAttributedText:)]) {
        return;
    }
    NSMutableAttributedString *attributedText;
    if (!self.attributedText) {
        attributedText = [[NSMutableAttributedString alloc] initWithString:self.text];
    } else {
        attributedText = [[NSMutableAttributedString alloc] initWithAttributedString:self.attributedText];
    }
    [attributedText setAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:self.font.pointSize]} range:range];
    self.attributedText = attributedText;}- (void)boldSubstring:(NSString*)substring {
    NSRange range = [self.text rangeOfString:substring];
    [self boldRange:range];}@end

有了这一更正,你可以多次使用它(如:

myLabel.text = @"Updated: 2012/10/14 21:59 PM";[myLabel boldSubstring: @"Updated:"];[myLabel boldSubstring: @"21:59 PM"];


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 609 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信