2013-10-11 59 views
1

我通過Interface Builder向tableView添加了一些tableViewCells,其中一個包含UITextView。無法更改UITextView的大小

的的tableView被重載的按鈕被點擊:

- (void)updateViewWithMessage:(NSString *)message 
{ 
    self.someMessage = message; 
    [self.tableView reloadData]; 
} 

在我的cellForRowAtIndexPath方法我檢查該小區並執行以下操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CellIdentifier = kMyCustomCell; 
    MyCustomCell *contentCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
    CGRect textViewFrame = contentCell.contentTextView.frame; 
    textViewFrame.size.height = [self heightForContentView]; 

    NSLog(@"%f, %f, %f, %f\n", textViewFrame.origin.x, 
      textViewFrame.origin.y, 
      textViewFrame.size.width, 
      textViewFrame.size.height); 

    contentCell.contentTextView.frame = textViewFrame; 
    contentCell.contentTextView.text = self.someMessage; 

    return contentCell; 
} 

在heightForContentView()我計算高度:

- (CGFloat)heightForContentView 
{ 
    CGSize boundingRectSize = CGSizeMake(kCustomCellWidth - 20, CGFLOAT_MAX); 
    CGRect textViewRect = [self.someMessage boundingRectWithSize:boundingRectSize 
                options:NSStringDrawingUsesLineFragmentOrigin 
               attributes:nil 
               context:nil]; 
    return textViewRect.size.height + 20; 
} 

單元格,如果我將行Height設置爲某物,正確調整大小。但textView中沒有。 如果我點擊我的按鈕兩次(updateViewWithMessage:方法再次調用),然後調整大小 - 這很奇怪!順便說一下:NSLog打印正確的大小,所以他們肯定是設置,但爲什麼這個TextView不調整大小呢?

有人可以幫我快速解決這個問題嗎?評論後

回答

1

編輯:

我覺得你不調整你的UITextView,添加此代碼之前調整contentCell

contentTextView.frame = CGRectMake(CGRectGetMinX(contentTextView.frame), CGRectGetMinY(contentTextView.frame), CGRectGetWidth(contentTextView.frame), textViewFrame.size.height); 

老答案:

也許你忘了通過attributes來計算新的尺寸:

CGRect textViewRect = [self.someMessage boundingRectWithSize:boundingRectSize 
              options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading) 
              attributes:@{NSFontAttributeName:FONT} 
              context:nil]; 

隨着FONT是你目前的字體。

看一看here

+0

nope,問題依然存在 – Kuno

+0

您的單元格從uitextview的新大小正確調整大小,但是您的textview不能調整大小? –

+0

是的,我可以根據需要將單元格大小調整爲高度 - 好的。但是我不能改變其包含的UITextView的大小,只有在界面構建器中更改它纔會更改。但我希望更具動態性......我在TextView上編程的更改對它的SIZE沒有任何影響。 – Kuno