我有一个父UIView
,在其中放置两个标签。每个标签只有一行,如下所示:
现在的问题是基线错误。我正在使用自动布局,问题是在这种情况下约束应如何显示?特别是标签的垂直放置。这些是我目前有的约束:
H:|-[title]-2-[description]-(>=5)-| //with NSLayoutFormatOptions.AlignAllFirstBaseline
V:|[title]|
V:|[description]|
以上约束导致
无法同时满足约束条件。
因为居中和第一个基线约束相互抵触。标签应采用父级的完整高度,但字体大小应不同。
我试图将标签固定在顶部/底部,但这并不适用于所有情况。
我应该如何垂直放置标签?
最佳答案
可以使用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;
}
在“查看确实加载”中,您可以将字符串设置为label,如下所示:
UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 50)];
[self.view addSubview:textLabel];
textLabel.attributedText = [self getRichText];
输出:
关于ios - 垂直对齐两个具有不同字体大小的标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30455159/