在自定义UITableviewcell内的UITextview Autolayout

时间:2016-04-19 14:57:59

标签: ios ios-autolayout

我在自定义UITextviewCell中有一个UITextView。我希望细胞根据UITextview的内容增长。我已将textview的顶部,底部,右侧,左侧固定到单元格的内容视图中。当我使用文本预填充textview时,它正如预期的那样正常工作。当我用键盘输入文本时,它无法正常工作。在我的自定义单元格内

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 ;
 }

1 个答案:

答案 0 :(得分:0)

你可以在这里做几件事,想到一件事:

•在输入文字时,请跟踪UITextView的高度,如保持“旧高度”变量和“新高度”变量。要获得“新高度”,您可以使用sizeThatFits的{​​{1}}方法设置高度,例如1000(足够大,不会限制您的结果)。

•当新高度与旧高度(小于或大于)不同时,您将重新加载包含您正在处理的UITextView的单元格。您可以设置UITextView事件,然后设置[cell setNeedsLayout]以确保其调整大小。

我想这应该有用,如果没有,请告诉我。