計算文字的寬度和高度

2021-07-03 03:58:03 字數 1407 閱讀 3685

計算文字的寬度和高度

cgsize namesize = [self.status.name boundingrectwithsize:namemaxsize option:(nsstringdrawingoptions)attributes:attrs context:nil].size;

//此方法計算字串(self.status.name)在螢幕上的寬度和高度

//文字的字型(cgsize)

//(nsstringdrawingoptions):先填nsstringdrawinguseslinefragmentorigin

nsdictionary *attrs = @;

//cgsize就是限制文字的高度和寬度,如果設定為cgsizemake(30, 100),那就是說字串的最長是30,最寬是100,超過的範圍不算

//maxfloat最大的浮點數,cgsizemake(maxfloat, maxfloat)這樣就是說不限制寬度和高度

cgsize namemaxsize = cgsizemake(maxfloat, maxfloat);

nsdictionary *attrs = [nsdictionary dictionary];

我們一般對此方法會進行封裝:

/*

計算文字尺寸

@param text 需要計算尺寸的文字

@param font 文字的字型

@param maxsize 文字的最大尺寸

*/- (cgsize)sizewithtext:(nsstring *)text font:(uifont *)font maxsize:(cgsize)maxsize

;return [text bouboundingrectwithsize:namemaxsize option:nsstringdrawinguseslinefragmentorigin attributes:attrs context:nil].size;

}

通過**自定義cell的流程:

1》新建乙個繼承自uitableviewcell的類

2》重寫initwithstyle:reuseidentifier方法

新增所需顯示的子控制項(不需要設定子控制項的資料和frame)

進行子控制項一次性的屬性設定(有些屬性只需設定一次,比如字型、固定的等)

3》提供2個模型屬性

frame模型:存放資料模型\所有子控制項的frame\cell的高度

4》cell擁有乙個frame模型(不要直接擁有frame模型)

5》重寫模型屬性的setter方法,在這個方法中設定控制項的顯示資料和frame

6》frame模型資料的初始化依舊採取懶載入的方式(每乙個cell對應的frame只模型載入一次)

動態計算文字寬度和高度

使用場景 例如在tableview的cell中,指定label最大寬度,高度不限,超過最大寬度則自動換行,先用這個方法來設定label的size,然後給label賦值string,即可得到自適應的label 返回uilabel自適應後的size param astring 字串 param widt...

IOS 獲取文字的高度和寬度

cgfloat heightforcontent mymsgtextmodel content withwidth cgfloat width nsdictionary attributes contentsize content.textmsg boundingrectwithsize cgsiz...

iOS 計算label的寬度和高度

根據寬度求高度 content 計算的內容 width 計算的寬度 font字型大小 cgfloat getlabelheightwithtext nsstring text width cgfloat width font cgfloat font context nil return rect....