我有一个带有UILabel和UITextView的单元格的UITextView。我正在尝试设置textview的宽度和高度。我在heightForRowAtIndexPath中执行此操作,但我的UITextView设置为自动调整故事构建器中的宽度。调用heightForRowAtIndexPath并找到我的UITextView时,它的宽度是接口构建器中设置的值,而不是“重新调整大小”的宽度。
那么,如何在自动调整大小后获得新尺寸?我的UITextVies在IB中设置为280,但是当我在iPad上显示它时,单元格宽度大于280,但在heightForRowAtIndexPath中,我仍然得到280.
任何人都可以告诉我hw在自动调整后获得正确的宽度。
更新
为了澄清,我试图在单元格中设置UITextView的高度。我调用了boundingRectWithSize,并传递了CGFloatMax的高度,但我需要在UITextView上将宽度设置为'new autosized'宽度。我想弄清楚如何做到这一点。
更新
以下是我的自动调整大小的屏幕截图。我将UILabel和UITextView设置为相同的方式,宽度设置为增长。
感谢您的帮助
答案 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的自动调整设置。