検索

ホームページ  >  に質問  >  本文

objective-c - uilabel 中利用NSParagraphStyle设置行距问题

我在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:]也不行

仅有的幸福仅有的幸福2878日前871

全員に返信(4)返信します

  • 阿神

    阿神2017-04-28 09:07:08

    最初に NSMutableAttributedString *richtext を使用して label.text を取得し、次に setAttributes を使用して、label.attributedText= richtext を設定できますか

    返事
    0
  • 黄舟

    黄舟2017-04-28 09:07:08

    この問題は解決されましたか?

    返事
    0
  • 我想大声告诉你

    我想大声告诉你2017-04-28 09:07:08

    NSBaselineOffsetAttributeName は @0 に設定されます

    返事
    0
  • 仅有的幸福

    仅有的幸福2017-04-28 09:07:08

    さらに、stackoverflow にも同様の投稿があります
    http://stackoverflow.com/ques...
    思い浮かぶ一時的な解決策は、uilabel が行として表示されるかどうかを判断することです。そうであれば、行間隔を に設定します。 0
    ソリューションのソースコード アドレス https://github.com/673697831/...
    より良いソリューションを提案したり、この計画を変更したりすることは大歓迎です

    返事
    0
  • キャンセル返事