搜尋

首頁  >  問答  >  主體

objective-c - uilabel 中利用NSParagraphStyle設定行距問題

我在uilabel中設定富文本 是為了調整行距 呼叫如下

1

2

3

4

5

6

7

8

<code>NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];

paragraphStyle.lineSpacing = klineSpacing;

NSAttributedString *str = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@%@%@", str0, str1, str2] attributes:@

                            

{

   NSFontAttributeName: [UIFont systemFontOfSize:15],

   NSParagraphStyleAttributeName: paragraphStyle,

}];</code>

label.attributedText = mutableAttStr;
//之前已經設定以下程式碼
// [messageLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical|UILoutConcobx​​i;高度)

當字數大於兩行時候 底下又沒有空白(沒有了行距)


為何會出現這種情況 要怎麼設定啊親

另外,我用- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary, id> )attributu:(ntrimtri) n );分別計算一行中文和一行英文的高度時候,發覺中文就是加了行距的,英文沒加

[NSString sizeWithAttributes:]進行高度計算的時候, 也不對

明確地呼叫字體,不用[UIFont systemFontOfSize:]也不行

仅有的幸福仅有的幸福2879 天前872

全部回覆(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顯示時候是否為一行,如果是,把line-spacing置為0
    解決方案原始碼網址https://github.com/673697831/...
    歡迎各位提出更好的方案或對此方案進行修改

    回覆
    0
  • 取消回覆