2013-10-02 81 views
0

我正在嘗試使用UICollectionView(利用UIDolynamic的UICollectionViewFlowLayout子類化)設置類似於iOS7中使用的消息UI。給定一個NSString,我需要爲UITextView計算必要的大小,以便文本不被剪切。我試過sizeWithAttributes:和核心文本的CTFramesetterSuggestFrameSizeWithConstraints方法,但是這兩種方法的高度都比他們應該做的小。我也嘗試使用隱藏文本視圖來計算框架,但爲每條消息填充textView相對昂貴。我已經設置了一個測試項目here。 任何想法我可能會失蹤? 謝謝!計算所需的UITextView大小

回答

4

試試你的NSString轉換爲NSAttrbutedString和使用:

- (CGRect)boundingRectWithSize:options:context:;

您還需要使用以下三種方法從UITextView中消除邊緣插入:

textView.contentInset = UIEdgeInsetsZero; 
[textView setTextContainerInset:UIEdgeInsetsZero]; 
[textView.textContainer setLineFragmentPadding:0]; 
+0

謝謝!效果很好,實際上'[textView setTextContainerInset:UIEdgeInsetsZero];'足以解決我遇到的尺寸問題。 – axelcdv

+0

是的,我誇大它,因爲它是一個新的API。 – jaredsinclair

0

這比iOS7稍舊,我猜你可以使用自動佈局約束(這就是我會這麼做的)。但是,這是它是如何被許多應用程序的完成,將指向你在正確的方向:

Dynamic Heights for textviews

+0

謝謝!那麼我使用的autolayout,其中大部分工作得很好,但在這種情況下,我真的不能避免使用固定寬度約束,我必須根據文本大小計算...但我會看看你的鏈接,看看它是否有效 – axelcdv