2016-05-06 73 views
0
func calculateHeightOfLabel(text: String, width: CGFloat, font: UIFont){ 
    //how can I find the height of a UILabel with these properties ? 
} 

UILabel可能有超過1行,並且該函數應該考慮到這一點。給定所需的寬度和字體,如何找到UILabel的高度?

我想創建一個全球性的輔助功能,可以找到高度(就好像它被添加到一個視圖)

+0

的UILabel已經有一個方法'sizeThatFits'。您可以在任何UILabel上調用它,例如'let labelSize:CGSize = label.sizeThatFits(CGSize(width:someWidth,height:reallyBigNumber)' – beyowulf

+0

我可以在添加它作爲子視圖之前執行此操作嗎? – TIMEX

+0

是的。另外,如果您只是想將標籤的框架設置爲您可以調用'label.sizeToFit()'的文本邊界 – beyowulf

回答

0

下面是我用

func getSize(text: String, labelfont fontType: UIFont, width labelwidth: Float) -> CGSize { 
text = "\(text)" 
var font1: UIFont = fontType 
var attributedText: NSAttributedString = NSAttributedString(string: text, attributes: [NSFontAttributeName: font1]) 
var rect: CGRect = attributedText.boundingRectWithSize(CGRect() 
    rect.labelwidth 
    rect.CGFLOAT_MAX, options: .UsesLineFragmentOrigin, context: nil) 
var size: CGSize = rect.size 
return size 

}

0

方法斯威夫特

func sizeWithAttributes(_ attrs: [String : AnyObject]?) -> 
    CGSize 

Objective-C的

- (CGSize)sizeWithAttributes:(NSDictionary<NSString *, id> * nullable)attributes 

實施例:

func calculateHeightOfLabel(text: String, width: CGFloat, font: UIFont) { 
     return text.sizeWithAttributes([NSFontAttributeName: font]).height 
} 
相關問題