UITextView在heightForRowAtIndexPath中设置宽度和高度

时间:2013-12-09 15:25:07

标签: ios xcode uitableview interface-builder uitextview

我有一个带有UILabel和UITextView的单元格的UITextView。我正在尝试设置textview的宽度和高度。我在heightForRowAtIndexPath中执行此操作,但我的UITextView设置为自动调整故事构建器中的宽度。调用heightForRowAtIndexPath并找到我的UITextView时,它的宽度是接口构建器中设置的值,而不是“重新调整大小”的宽度。

那么,如何在自动调整大小后获得新尺寸?我的UITextVies在IB中设置为280,但是当我在iPad上显示它时,单元格宽度大于280,但在heightForRowAtIndexPath中,我仍然得到280.

任何人都可以告诉我hw在自动调整后获得正确的宽度。

更新

为了澄清,我试图在单元格中设置UITextView的高度。我调用了boundingRectWithSize,并传递了CGFloatMax的高度,但我需要在UITextView上将宽度设置为'new autosized'宽度。我想弄清楚如何做到这一点。

更新

以下是我的自动调整大小的屏幕截图。我将UILabel和UITextView设置为相同的方式,宽度设置为增长。

enter image description here

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

heightForRowAtIndexPath这是UITableView的委托方法,用于定义UITableViewCell的高度。如果您已使用UITableView.rowHeight方法或在Storyboard中设置行高,并且您的行具有静态高度,则无需实现它。

假设UITextView中包含UITableView(否则行高和文字视图高度 相关),请确保autoresizingMask是正确的。

答案 1 :(得分:0)

尝试:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

        NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:17.0]};
        CGRect rect = [self.textview.text boundingRectWithSize:CGSizeMake(textview_width, max_height) 
                                              options:NSStringDrawingUsesLineFragmentOrigin 
                                              attributes:attributes 
                                              context:nil];
return rect.size.height;
}

答案 2 :(得分:-1)

我这是另一种方式,因为没有人能够提供bester解决方案。我得到了屏幕宽度并重新计算了我的UITextView的位置。我还必须删除UITextView的自动调整设置。