我在uilabel中设置富文本 是为了调整行距 调用如下
NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
paragraphStyle.lineSpacing = klineSpacing;
NSAttributedString *str = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@%@%@", str0, str1, str2] attributes:@
{
NSFontAttributeName: [UIFont systemFontOfSize:15],
NSParagraphStyleAttributeName: paragraphStyle,
}];
label.attributedText = mutableAttStr;
//之前已经设置以下代码
// [messageLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical|UILayoutConstraintAxisHorizontal];
然后我发觉 只有一行中文的时候 底下会留空白(其实是lineSpacing高度)
当字数大于两行时候 底下又没有空白(没有了行距)
为何会出现这种情况 要怎么设置啊亲
另外,我用- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString , id> )attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0);分别计算一行中文和一行英文的高度时候,发觉中文就是加了行距的,英文没加
[NSString sizeWithAttributes:]进行高度计算的时候, 也不对
显式地调用字体,不用[UIFont systemFontOfSize:]也不行
먼저 NSMutableAttributedString *richtext를 사용하여 label.text를 가져온 다음 setAttributes를 가져온 다음 label.attributedText= richtext를 설정할 수 있습니다
이 문제가 해결되었나요?
NSBaselineOffsetAttributeName이 @0으로 설정되었습니다
또한 stackoverflow에도 유사한 게시물이 있습니다
http://stackoverflow.com/ques...
생각나는 임시 해결책은 표시될 때 uilabel이 줄인지 확인하는 것입니다. 그러니 줄 간격을 0으로 설정하세요
솔루션 소스 코드 주소 https://github.com/673697831/...
더 나은 솔루션을 제안하거나 이 솔루션을 수정해도 좋습니다