1. 程式人生 > >iOS 中Label在自適應寬高的同時設定文字行距行距

iOS 中Label在自適應寬高的同時設定文字行距行距

直接寫一個類別:

.h檔案的方法介面

#import <UIKit/UIKit.h>

@interface UILabel (Adaptive)
/**
 *  自適應寬高同時調整行距
 *
 *  @param text label.text
 *  @param font label.font
 *  @param size label的最大尺寸
 *
 *  @return 自適應後的到的size
 */
- (CGSize )szieAdaptiveWithText:(NSString *)text andTextFont:(UIFont *)font andTextMaxSzie:(CGSize )size;
@end

.m中方法的實現

#import "UILabel+Adaptive.h"

@implementation UILabel (Adaptive)

- (CGSize )szieAdaptiveWithText:(NSString *)text andTextFont:(UIFont *)font andTextMaxSzie:(CGSize )size{

    self.text = text;
    self.font = font;

//可變的屬性文字
    NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc]initWithString:self
.text]; //設定段落樣式 使用NSMutableParagraphStyle類 NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.alignment = NSTextAlignmentLeft;//文字對齊方式 paragraphStyle.maximumLineHeight = 60; //最大的行高 paragraphStyle.lineSpacing = 8; //行自定義行高度 // 給可變的屬性字串 新增段落格式
[attributedText addAttribute: NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [self.text length])]; //將帶有段落格式的可變的屬性字串給label.attributedText self.attributedText = attributedText; self.lineBreakMode = NSLineBreakByTruncatingTail;//label的換行模式 self.numberOfLines = 0;// 設定行數,0表示沒有限制 CGSize maxSzie = size;//設定label的最大SIZE [self sizeToFit]; CGSize labelSize = [self sizeThatFits:maxSzie];//最終自適應得到的label的尺寸。 return labelSize; }