4

我正在尝试更改 UITextView 的高度,该 UITextView 位于我的 tableView 的定制单元格中。

'OverviewCell' 是笔尖中此自定义单元格的标识符,并且 UITextView 'postIntro' 也被拖入笔尖。

可悲的是高度没有改变,只有在我滚动高度之后才会改变。无需滚动即可看到的单元格只是笔尖的默认高度。

当我尝试更改“postImage”的高度时,会发生同样的问题。

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  static NSString *CellIdentifier = @"OverviewCell";

  OverviewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

  Post *post = [self.posts objectAtIndex:[indexPath row]];

  if(!cell)
  {
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"OverviewCell" owner:nil options:nil];

    for(id currentObject in topLevelObjects)
    {
        if([currentObject isKindOfClass:[OverviewCell class]])
        {
            cell = (OverviewCell *)currentObject;
            break;
        }
    }
  }

  [[cell postImage] setImage:[UIImage imageWithData:post.image]];
  [[cell postTitle] setText:post.title];
  [[cell postIntro] setText:post.intro];

  // Resize the intro textview so the text fits in.
  CGRect frame = cell.postImage.frame;
  frame.size.height = 20; //cell.postIntro.contentSize.height;
  [cell.postIntro setFrame:frame];

  NSLog([NSString stringWithFormat:@"Height of textView on indexpath %i is set to %f", indexPath.row ,cell.postImage.frame.size.height]);

  return cell;

}

欢迎对我的代码提出任何其他建议......

4

3 回答 3

2

我终于通过在代码中更改 UITextview 的约束来让它工作。

我已经创建了附加到 UITextview 约束的 IBOutlet。

IBOutlet NSLayoutConstraint * postContentHeightConstraint;

之后,我将约束高度设置为单元格 ( contentSize) 的指定高度。

self.postContentHeightConstraint.constant = self.postContent.contentSize.height;

将新高度设置为约束后,调用 UITextView 上的 layoutIfNeeded 函数

[self.postContent layoutIfNeeded];
于 2013-07-01T09:35:25.570 回答
0

在您的表视图委托中实现tableView:heightForRowAtIndexPath:。

更新:要在 UITextView 创建后更新它的高度,请[cell.postIntro setNeedsLayout]在设置框架后调用

于 2013-06-21T13:01:29.180 回答
0

要更改 的高度UITextView,请调用

[tableView beginUpdates];
[tableView endUpdates];

为 UITextView 设置新尺寸后。

对此提出疑问,将有助于解决您的问题。

希望答案有帮助!

于 2013-07-01T05:10:19.587 回答