2017-04-23 84 views
0

我想獲得一個NSString的子字符串,可以適合框架的UILabel。我使用此代碼來獲得的CGRect -boundingRectWithSize總是返回相同的CGRect

CGSize sizeConstraint = CGSizeMake(355, 293.09375); 

NSMutableParagraphStyle *paraStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; 
paraStyle.lineBreakMode = NSLineBreakByWordWrapping; 

NSDictionary *attributes = @{ NSFontAttributeName : bodyFont, NSParagraphStyleAttributeName : paraStyle}; 

NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:body attributes:attributes]; 
CGRect boundingRect = [attributedText boundingRectWithSize:sizeConstraint options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading) context:nil]; 

的問題我一個現在面臨的是字符串一定量的字符之後boundingRectWithSize返回相同的CGRrect。這裏是的CGRect我得到當字符串長度677個字符 -

(CGRect) boundingRect = (origin = (x = 0, y = 0), size = (width = 352.515625, height = 281.25)) 

而且的CGRect我得到當字符串爲1354個字符長 -

(CGRect) boundingRect = (origin = (x = 0, y = 0), size = (width = 352.515625, height = 281.25)) 

不知道爲什麼

+0

是啊,我的確值得投降 – genaks

回答

0

剛剛意識到我的錯誤 -

CGSize sizeConstraint = CGSizeMake(355, 293.09375); 

應該

CGSize sizeConstraint = CGSizeMake(labelWidth, CGFLOAT_MAX); 

然後我應該在邏輯上修剪字符串。笨!

相關問題