解决NSMutableAttributedString富文本,不同大小的文字水平轴对齐问题:中部对齐

这篇博客探讨了如何解决NSMutableAttributedString中不同大小的文字在水平轴上的对齐问题,尤其是实现中部对齐。默认情况下,这些文本是底部对齐,但通过调整NSBaselineOffsetAttributeName属性的值,可以实现对齐位置的精确控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决NSMutableAttributedString富文本,不同文字大小水平轴对齐问题(默认底部对齐)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

默认是底部对齐,其实对的也不齐,

目标效果:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

NSBaselineOffsetAttributeName

基线偏移量:
调整: NSBaselineOffsetAttributeName的值得大小,就可以得到不同的对齐位置

CGFloat fontRatio = 0.16;//基线偏移比率

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

CGFloat fontRatio = 0.66;//基线偏移比率

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"富文本";
    
    NSString *text = @"(2) 3 : 2 (1)";
    
    NSInteger fontSize1 = 30;
    NSInteger fontSize2 = 16;
    CGFloat fontRatio = 0.66;//基线偏移比率
    
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(150, 200, 150, 40)];
    label.text = text;
    
    NSMutableAttributedString *attributedStringM = [[NSMutableAttributedString alloc] initWithString:text];
    
    [attributedStringM addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:fontSize2] range:NSMakeRange(0, 3)];
    [attributedStringM addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 3)];
    
    [attributedStringM addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:fontSize1] range:NSMakeRange(3, text.length - 6)];
    [attributedStringM addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(3, text.length - 6)];
    
    [attributedStringM addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:fontSize2] range:NSMakeRange(text.length - 3, 3)];
    [attributedStringM addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(text.length - 3, 3)];
    
    //不同大小的文字水平中部对齐(默认是底部对齐)
    [attributedStringM addAttribute:NSBaselineOffsetAttributeName value:@(fontRatio * (fontSize1 - fontSize2)) range:NSMakeRange(0, 3)];
    [attributedStringM addAttribute:NSBaselineOffsetAttributeName value:@(fontRatio * (fontSize1 - fontSize2)) range:NSMakeRange(text.length - 3, 3)];
    
    label.attributedText = attributedStringM;
    [self.view addSubview:label];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值