iOS UILabel自定義行間距時獲取高度

2021-07-09 02:03:28 字數 1787 閱讀 3642

參考:

本文介紹一下自定義行間距的uilabel的高度如何獲取,需要借助一下開源的uilabel控制項:

tttattributedlabel

#import

"tttattributedlabel.h

"

直接上**

nsstring *str = @"

uilabel自定義行間距時獲取高度,uilabel自定義行間距時獲取高度,uilabel自定義行間距時獲取高度,uilabel自定義行間距時獲取高度,uilabel自定義行間距時獲取高度,uilabel自定義行間距時獲取高度,uilabel自定義行間距時獲取高度.";

//建立tttlabel

tttattributedlabel *tttlabel = [[tttattributedlabel alloc] initwithframe:cgrectmake(30, 55, 300, 100

)]; tttlabel.linespacing = 6;//

設定行間距

tttlabel.font = [uifont systemfontofsize:12

]; tttlabel.numberoflines = 0; //

設定行數為0

[tttlabel settext:str];

tttlabel.textalignment =nstextalignmentleft;

tttlabel.backgroundcolor =[uicolor redcolor];

[self.view addsubview:tttlabel];

//獲取tttlabel的高度

//先通過nsmutableattributedstring設定和上面tttlabel一樣的屬性,例如行間距,字型

nsmutableattributedstring *attrstring =[[nsmutableattributedstring alloc] initwithstring:str];

//自定義str和tttattributedlabel一樣的行間距

nsmutableparagraphstyle *paragrapstyle =[[nsmutableparagraphstyle alloc] init];

[paragrapstyle setlinespacing:6];

//設定行間距

[attrstring addattribute:nsparagraphstyleattributename value:paragrapstyle range:nsmakerange(0

, str.length)];

//設定字型

[attrstring addattribute:nsfontattributename value:[uifont systemfontofsize:12] range:nsmakerange(0

, str.length)];

//得到自定義行間距的uilabel的高度

cgfloat height = [tttattributedlabel sizethatfitsattributedstring:attrstring withconstraints:cgsizemake(300, maxfloat) limitedtonumberoflines:0

].height;

//重新改變tttlabel的frame高度

cgrect rect =tttlabel.frame;

rect.size.height =height;

tttlabel.frame = rect;

使用組合自定義行為

如果您的設計依賴於繼承,則需要找到一種方法來更改物件的型別以更改其行為。對於組合,您只需要更改物件使用的策略 想象一下,我們的經理突然變成了按小時計酬的臨時雇員。您可以通過以下方式在程式執行期間修改物件 in program.py from hr import payrollsystem,hourl...

pandas自定義行數apply

pandas是資料分析的利器,它內建許多的函式,我之前的一篇部落格對pandas的一些常用函式都做了介紹,但是很多時候光是他本身自帶的函式可能還不夠用,所以這裡介紹一下pandas資料型別dataframe的乙個方法,可以讓我們的自定義函式運用在上面。下面看一段 import pandas as p...

gridview顯示資料每 (自定義)行顯示一空行

如題,比如說我想要在gridview顯示資料時每 行動態新增乙個空行,與其他資料分隔開 具體 如下 intnum asinteger 0 記錄當前資料行繫結的位置 dimidentity asinteger 0 記錄前面動態新增了幾個空行 protected subgridview1 rowdata...