iOS--UILabel設(shè)置行距和字間距档痪,并根據(jù)文本計(jì)算高度

iOS開(kāi)發(fā)中經(jīng)常會(huì)用到UILabel來(lái)展示一些文字性內(nèi)容涉枫,默認(rèn)的排版方式會(huì)有些擠,這里來(lái)介紹一下如何給UILabel設(shè)置行間距和字間距腐螟,歡迎大家多提意見(jiàn)愿汰,共勉??????

實(shí)現(xiàn)方法

設(shè)置行間距困后,字間距等都是對(duì)字符串的處理,這里需要用到富文本NSAttributedStringNSMutableAttributedString衬廷,設(shè)置其屬性即可摇予。

創(chuàng)建label備用:

NSString*textContent =@"人生若只如初見(jiàn),何事秋風(fēng)悲畫扇吗跋。等閑變卻故人心侧戴,卻道故人心易變。驪山語(yǔ)罷清宵半跌宛,淚雨零鈴終不怨酗宋。何如薄幸錦衣郎,比翼連枝當(dāng)日愿疆拘。";//labelUILabel*testLabel = [[UILabelalloc] initWithFrame:CGRectMake(20,100,self.view.frame.size.width-20*2,300)];//多行顯示testLabel.numberOfLines =0;? ? testLabel.backgroundColor = [UIColorlightGrayColor];? ? [self.view addSubview:testLabel];//富文本屬性NSMutableDictionary*textDict = [NSMutableDictionarydictionary];//基本屬性設(shè)置//字體顏色textDict[NSForegroundColorAttributeName] = [UIColorblackColor];//字號(hào)大小textDict[NSFontAttributeName] = [UIFontsystemFontOfSize:16.0];

行間距:

設(shè)置行間距需要用到NSMutableParagraphStyle蜕猫,NSMutableParagraphStyle用于設(shè)定文本段落有關(guān)的設(shè)置,比如行間距哎迄,文本縮進(jìn)回右,段間距等,用法如下:

//段落樣式NSMutableParagraphStyle*paraStyle = [[NSMutableParagraphStylealloc] init];//行間距paraStyle.lineSpacing =10.0;//首行文本縮進(jìn)paraStyle.firstLineHeadIndent =20.0;//使用//文本段落樣式textDict[NSParagraphStyleAttributeName] = paraStyle;

字間距:

直接修改NSAttributedString芬失,或者NSMutableAttributedStringNSKernAttributeName屬性即可楣黍,用法如下:

//字間距(字符串)textDict[NSKernAttributeName] = @(1);

賦值:

//賦值testLabel.attributedText = [[NSAttributedStringalloc] initWithString:textContent attributes:textDict];

效果如下:

行間距匾灶,字間距

計(jì)算文本高度(有行間距的情況下)

記住你對(duì)label的設(shè)置棱烂,計(jì)算高度時(shí)傳入字符串,寬度和富文本的屬性(字典類型)即可阶女。

-(CGFloat)getSpaceLabelHeight:(NSString*)str withAttrDict:(NSMutableDictionary*)dict withWidth:(CGFloat)width {CGSizesize = [str boundingRectWithSize:CGSizeMake(width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOriginattributes:dict context:nil].size;returnsize.height;}

NSMutableParagraphStyle補(bǔ)充

NSMutableParagraphStyle功能很強(qiáng)大颊糜,還有很多屬性可以用,比如:

//段落行距//paragraphStyle.lineSpacing = 10; //非首行文本縮進(jìn)? ? ? ? ? ? ? ? //paragraphStyle.headIndent = 5;? // 文本縮進(jìn)(右端)? ? ? ? ? ? ? ? //paragraphStyle.tailIndent = -20;? // 首行文本縮進(jìn)? ? ? ? ? //paragraphStyle.firstLineHeadIndent = 20;? //文本對(duì)齊方式? ? ? ? //paragraphStyle.alignment = NSTextAlignmentRight;? //折行方式//paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; //文本寫入方式//paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight; //文本行間距 是默認(rèn)行間距的多少倍//paragraphStyle.lineHeightMultiple = 3.0; //文本最大行距? ? ? ? //paragraphStyle.maximumLineHeight = 50;? //文本最小行距? ? ? //paragraphStyle.minimumLineHeight = 50; /*

allowsDefaultTighteningForTruncation(收縮字符間距允許截?cái)啵?/p>

*///paragraphStyle.allowsDefaultTighteningForTruncation = YES; // 設(shè)置每行的最后單詞是否截?cái)嗤翰龋?.0-1.0之間衬鱼,默認(rèn)為0.0,越接近1.0單詞被截?cái)嗟目赡苄栽酱螅?/paragraphStyle.hyphenationFactor = 1.0; //段落后面的間距//paragraphStyle.paragraphSpacing = 10; //設(shè)置段與段之間的距離? ? ? ? ? //paragraphStyle.paragraphSpacingBefore = 20;? ? ?

富文本屬性補(bǔ)充

/*

? ? 刪除線和下劃線


? ? 枚舉常量 NSUnderlineStyle中的值

? ? NSUnderlineStyleNone? ? ? ? //不設(shè)置刪除線


? ? NSUnderlineStyleSingle? ? ? // 設(shè)置刪除線為細(xì)單實(shí)線

? ? NSUnderlineStyleThick? ? ? //? 設(shè)置刪除線為粗單實(shí)線

? ? NSUnderlineStyleDouble? ? // 設(shè)置刪除線為細(xì)雙實(shí)線


? ? NSUnderlinePatternSolid

? ? NSUnderlinePatternDot? ? //點(diǎn)

? ? NSUnderlinePatternDash? //虛線

? ? NSUnderlinePatternDashDot? //虛線和點(diǎn)

? ? NSUnderlinePatternDashDotDot? //虛線和點(diǎn)點(diǎn)


? ? NSUnderlineByWord

? ? */// NSNumber憔杨,加刪除線鸟赫,默認(rèn)不加刪除線,其它的話是加不同風(fēng)格的刪除線dict[NSStrikethroughStyleAttributeName] = @(NSUnderlinePatternSolid|NSUnderlineStyleSingle);//UIColor,刪除線顏色消别,默認(rèn)等于文本前景顏色,前提是需要加刪除線抛蚤,和NSStrikethroughStyleAttributeName有關(guān)dict[NSStrikethroughColorAttributeName] = [UIColoryellowColor];// NSNumber,加下劃線寻狂,默認(rèn)NSUnderlineStyleNone不加下劃線岁经,其它的話是加不同的下劃線dict[NSUnderlineStyleAttributeName] = @(NSUnderlineStyleDouble);// UIColor,下劃線顏色,默認(rèn)等于文本前景顏色,前提是需要加下劃線蛇券,和NSUnderlineStyleAttributeName有關(guān)dict[NSUnderlineColorAttributeName] = [UIColoryellowColor];// UIColor,默認(rèn)等于文本前景顏色缀壤,需要和NSStrokeWidthAttributeName一起使用dict[NSStrokeColorAttributeName] = [UIColoryellowColor];// NSNumber,使文本有一種中空的效果(有立體效果)數(shù)字越大樊拓,文本填充的越滿,數(shù)字越小塘慕,文本顏色越淡筋夏,不需要和NSStrokeColorAttributeName一起使用dict[NSStrokeWidthAttributeName] = @5;/*

? ? 文本陰影

? ? NSShadow *shadow = [[NSShadow alloc] init];

? ? shadow.shadowOffset = CGSizeMake(2, 3);? ? ? 陰影偏移量

? ? shadow.shadowColor = [UIColor yellowColor];? 陰影顏色

? ? shadow.shadowBlurRadius = 1.0;? ? ? ? ? ? ? 陰影圓角

? ? */// NSShadow,默認(rèn)沒(méi)有陰影,dict[NSShadowAttributeName] = shadow;// NSNumber,文本字間距(字與字之間的距離)dict[NSKernAttributeName] = @10;// NSURL或者是鏈接字符串,文本鏈接樣式图呢,自帶下劃線叁丧,文本顏色是藍(lán)色dict[NSLinkAttributeName] = [NSURLURLWithString:@"http:baidu.com"];// NSURL或者是鏈接字符串,文本鏈接樣式,自帶下劃線岳瞭,文本顏色是藍(lán)色dict[NSLinkAttributeName] =@"http:baidu.com";// NSNumber拥娄,本文的擴(kuò)張倍數(shù),負(fù)數(shù)的話相當(dāng)于縮小dict[NSExpansionAttributeName] = @(-0.5);// NSNumber瞳筏,本文的斜體程度以及斜體方向稚瘾,默認(rèn)0不歪斜,負(fù)數(shù)相當(dāng)于右斜姚炕,正數(shù)相當(dāng)于左斜摊欠,歪斜的程度由數(shù)字的大小決定dict[NSObliquenessAttributeName] = @(0.7);// NSNumber,行文本基線的偏移量dict[NSBaselineOffsetAttributeName] = @(15.0);// 貌似是文本寫入方向dict[NSWritingDirectionAttributeName] = @[@(NSWritingDirectionOverride),@(NSWritingDirectionRightToLeft)];// 文本的垂直與水平,目前在iOS,它總是水平柱宦,任何其他值的行為是未定義的dict[NSVerticalGlyphFormAttributeName] = @(1);// 在文本中插入表情NSTextAttachment*textAtt = [[NSTextAttachmentalloc] init];? ? textAtt.image = [UIImageimageNamed:@"cloud.png"];? ? dict[NSAttachmentAttributeName] = textAtt;

本文為轉(zhuǎn)載的出處再下方??

作者:林夕不昔

鏈接:http://www.reibang.com/p/badee2350860

來(lái)源:簡(jiǎn)書

簡(jiǎn)書著作權(quán)歸作者所有些椒,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掸刊,一起剝皮案震驚了整個(gè)濱河市免糕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忧侧,老刑警劉巖石窑,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蚓炬,居然都是意外死亡松逊,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門肯夏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)经宏,“玉大人,你說(shuō)我怎么就攤上這事驯击∷咐迹” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵余耽,是天一觀的道長(zhǎng)缚柏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)碟贾,這世上最難降的妖魔是什么币喧? 我笑而不...
    開(kāi)封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任轨域,我火速辦了婚禮,結(jié)果婚禮上杀餐,老公的妹妹穿的比我還像新娘干发。我一直安慰自己,他們只是感情好史翘,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布枉长。 她就那樣靜靜地躺著,像睡著了一般琼讽。 火紅的嫁衣襯著肌膚如雪必峰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天钻蹬,我揣著相機(jī)與錄音吼蚁,去河邊找鬼。 笑死问欠,一個(gè)胖子當(dāng)著我的面吹牛肝匆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播顺献,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼旗国,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了注整?” 一聲冷哼從身側(cè)響起能曾,我...
    開(kāi)封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎设捐,沒(méi)想到半個(gè)月后借浊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡萝招,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了存捺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片槐沼。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捌治,靈堂內(nèi)的尸體忽然破棺而出岗钩,到底是詐尸還是另有隱情,我是刑警寧澤肖油,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布兼吓,位于F島的核電站,受9級(jí)特大地震影響森枪,放射性物質(zhì)發(fā)生泄漏视搏。R本人自食惡果不足惜审孽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望浑娜。 院中可真熱鬧佑力,春花似錦、人聲如沸筋遭。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)漓滔。三九已至编饺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間响驴,已是汗流浹背反肋。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留踏施,地道東北人石蔗。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像畅形,于是被迫代替她去往敵國(guó)和親养距。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容