gpt4 book ai didi

ios - 垂直对齐两个不同字体大小的标签

转载 作者:行者123 更新时间:2023-11-28 18:57:49 25 4
gpt4 key购买 nike

我有一个父 UIView,我在其中放置了两个标签。这些标签中的每一个都只有一行,如下所示:

baseline not correctly aligned

现在的问题是基线不对。我正在使用自动布局,问题是在这种情况下我的约束应该是什么样子?特别是标签的垂直定位。这些是我目前的限制:

H:|-[title]-2-[description]-(>=5)-| //with NSLayoutFormatOptions.AlignAllFirstBaseline
V:|[title]|
V:|[description]|

上述约束导致

Unable to simultaneously satisfy constraints.

因为居中和第一个基线约束在互相争斗。标签应占据父级的全高,但字体大小不同。

我尝试将标签固定到顶部/底部,但这并不适用于所有情况。

我应该如何垂直放置我的标签?

最佳答案

您可以使用 AttributedString,而不是为富文本使用两个不同的标签。这是一个例子:

- (NSMutableAttributedString*)getRichText {
NSString *str1 = @"I am bold ";
NSString *str2 = @"I am simple";

NSMutableAttributedString *attString=[[NSMutableAttributedString alloc] initWithString:[str1 stringByAppendingString:str2]];

UIFont *font1=[UIFont fontWithName:@"Helvetica-Bold" size:30.0f];
UIFont *font2=[UIFont fontWithName:@"Helvetica" size:20.0f];
NSInteger l1 = str1.length;
NSInteger l2 = str2.length;
[attString addAttribute:NSFontAttributeName value:font1 range:NSMakeRange(0,l1)];
[attString addAttribute:NSFontAttributeName value:font2 range:NSMakeRange(l1,l2)];
return attString;
}

在 View did load 中,您可以将字符串设置为标签,如下所示:

UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 50)];
[self.view addSubview:textLabel];
textLabel.attributedText = [self getRichText];

输出: enter image description here

关于ios - 垂直对齐两个不同字体大小的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30455159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com