码迷,mamicode.com
首页 > 其他好文 > 详细

textView放在自定义cell里面-自适应高度

时间:2017-12-01 16:39:08      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:begin   动态   自适应高度   too   return   定义   自定义cell   刷新   turn   

 

textView放在自定义cell里面-自适应高度

1,textView有个属性 scrollEnabled  要设置为NO;

2,设置tableview的时候  添加这两行代码:

    self.tableView.rowHeight = UITableViewAutomaticDimension;

    self.tableView.estimatedRowHeight = 100;

3,textView的底部要和contentView底部有个约束 xib

控件布局约束

技术分享图片

- (void)awakeFromNib {

    [super awakeFromNib];

    self.textView.delegate = self;

    self.textView.scrollEnabled = NO ;

    self.oldTextViewBounds = self.textView.bounds;

}

技术分享图片

要实现动态输入文字让cell随时更改高度 要用tableView beginUpdates和endUpdates两方法进行刷新,那么要什么时候进行刷新呢?要达到实时,所以我想到

textViewDidChange代理方法,这个会在文字改变的时候一直调用,所以在这个代理方法里面进行刷新是最合适不过的了,那么,我们又怎么能拿到tableView来进行调用更新呢?

其实我们可以用while循环查找cell的父控件来找到tableView  所以喽,就是这样:

技术分享图片
- (void)textViewDidChange:(UITextView *)textView
{
    CGRect bounds = textView.bounds;
//     计算 text view 的高度
    CGSize maxSize = CGSizeMake(bounds.size.width, CGFLOAT_MAX);
    CGSize newSize = [textView sizeThatFits:maxSize];
    bounds.size = newSize;
    textView.bounds = bounds;
    // 让 table view 重新计算高度

    //2.textView的高度不想等就更新 让 table view 重新计算高度

    if (bounds.size.height != self.oldTextViewBounds.size.height) {

        UITableView *tableView = [self tableView];

        [tableView beginUpdates];

        [tableView endUpdates];

    }

    self.oldTextViewBounds = bounds;

}
- (UITableView *)tableView
{
    UIView *tableView = self.superview;
    while (![tableView isKindOfClass:[UITableView class]] && tableView) {
        tableView = tableView.superview;
    }
    return (UITableView *)tableView;
}
技术分享图片

到此,完成自适应;

 

如果键盘弹出来会当着键盘  你可以用第三方的框架  IQKeyboardManager

 

textView放在自定义cell里面-自适应高度

标签:begin   动态   自适应高度   too   return   定义   自定义cell   刷新   turn   

原文地址:http://www.cnblogs.com/junhuawang/p/7942807.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!