自定义UITextview里面自定义UITableviewcell
我有自定义UITextviewCell里面的UITextView。我希望单元格根据UITextview的内容进行增大。我已将textview的顶部,底部,右侧,左侧固定到单元格的内容视图。当我用文本预先填充textview时,它按预期正常工作。当我用键盘输入文字时它不起作用。我的自定义单元格内。自定义UITextview里面自定义UITableviewcell
UITextView * textView = [[UITextView alloc]init];
[textView setTranslatesAutoresizingMaskIntoConstraints:NO];
[textView setBackgroundColor:[UIColor redColor]];
[textView setScrollEnabled:NO];
[textView setDelegate:self];
[self.contentView addSubview:textView];
NSLayoutConstraint *xConstrain = [NSLayoutConstraint constraintWithItem:textView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0];
NSLayoutConstraint *yConstrain = [NSLayoutConstraint constraintWithItem:textView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];
NSLayoutConstraint *rightConstrain = [NSLayoutConstraint constraintWithItem:textView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];
NSLayoutConstraint *bottomConstrain = [NSLayoutConstraint constraintWithItem:textView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0];
[self.contentView addConstraint:xConstrain];
[self.contentView addConstraint:yConstrain];
[self.contentView addConstraint:rightConstrain];
[self.contentView addConstraint:bottomConstrain];
在我的tableview控制器加入以下行
-(void)viewdidload
{
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 100.0f ;
}
有一对夫妇的事情,你可以在这里做,一个出现在脑海:
•当您输入文本时,跟踪UITextView
的高度,如保持“旧高度”变量和“新高度”变量。要获得“新高度”,可以使用UITextView
的sizeThatFits
方法,将高度设置为例如1000(足够大以至于不会限制结果)。
•当新高度与旧高度不同时(或者更小或更大),重新加载包含您正在处理的UITextView
的单元格。你可以设置事件[cell setNeedsLayout]
,然后[cell layoutIfNeeded]
以确保它调整大小。
我想这应该工作,请让我知道,如果它不。
你是否建议使用sizeThatFits:方法? –
是的,这样做,我会更新我的答案。 – trdavidson
但我想用contrains来实现这一点。我不喜欢使用setFrame。 –
如果工作正常,您的问题是什么? – fsb
它只在我做settext时才起作用:用textView,但当我用键盘输入文本时不工作。 –