2013-05-30 96 views
4

我有一個包含UITextView的UITableViewCell子類,其中滾動關閉。我把它的框架是這樣,在我的表視圖細胞layoutSubviews方法:UITextView文本在有大量文本時被截斷

CGRect frame = self.bodyTextView.frame; 
    CGSize size = self.bodyTextView.contentSize; 
    frame.size = size; 
    self.bodyTextView.frame = frame; 

這一直罰款一段時間,但我注意到,在一個情況下我有一個特別大量的文字,文本正在被切斷。我已將文本視圖框架背景顏色設置爲橙色,以便我可以驗證框架設置是否正確。下面是一個例子(我只示出了文本視圖的底部):

enter image description here

框架是基於文本的正確大小(在這種情況下1019個點),但文本之前停止文本視圖的底部。我也看到文本通過一條線的一部分被截斷(即,最後一行可見文本的文本被水平切掉一半)。有沒有人知道這裏發生了什麼?

其他一些要點:

  • 意見爲我所有的表視圖細胞具有更短的工作內容以及文本。
  • 如果我在上面顯示的情況下增加了文本的數量,文本視圖高度會增加,但文本仍然會在相同的位置被截斷。
+0

你是否也在增加單元高度來代表內容大小? –

+0

是的,單元格高度在表視圖委託heightForRowAtIndexPath方法中設置,併爲表格視圖單元格設置正確的高度。 – Darren

回答

4

根據this和類似的答案,這個問題可能是「在UITextView中已經添加到視圖後,正確的contentSize僅適用......在此之前,它等於frame.size」

我建議你以不同的方式計算高度,比如-sizeWithFont:或者-sizeTofit

+0

感謝您的鏈接。這很有趣,但我的框架似乎已經正確設置,它只是因爲某些原因被切斷的文本。我試着自己計算框架高度,並使用sizeToFit,但它們沒有效果。 – Darren

+0

我真的很抱歉,我誤解了這個問題。 因此,調整uitextview的框架大小似乎不會影響更大空間內容的新繪製。你有沒有看過這個[問題?](http://stackoverflow.com/questions/16301147/why-uitextview-draws-text-in-bad-frame-after-resizing) – dimuz

+0

這導致我的答案:我忘了打電話給[超級layoutSubviews],當我在表格視圖單元格類中過度...嘆息... – Darren

1

使用此得到TEXTSIZE

// find the text width; so that btn width can be calculate 
CGSize textSize = [@"YOUR TEXT" sizeWithFont:[UIFont fontWithName:@"Arial" size:20.0] 
           constrainedToSize:CGSizeMake(320.0f, 99999.0f) 
            lineBreakMode:UILineBreakModeWordWrap]; 

,然後以此爲設置高度:

CGRect frame = self.bodyTextView.frame; 

frame.size = textSize; 
self.bodyTextView.frame = frame; 

希望它可以幫助你。

+0

感謝您的建議。我的框架已經正確設置,但它只是因爲某些原因被切斷的文本。我確實試過這個解決方案,只是爲了看看會發生什麼,但沒有任何改變。 – Darren

+0

您是以編程方式還是通過NIB創建了您的textview? –

+0

它在我的子類UITableViewCell xib中。 – Darren