UI效果iOS学习iOS Developer

iOS开发日记-tableviewCell的自适应

2017-02-27  本文已影响97人  Simple_Dev

写在前言:
久了没写文章,就会变得越来越懒,还会给自己找各种理由,说自己忙,没时间写文章.其实最近由于受一个很热门的话题困扰-关于程序猿的年龄的思考,自己有些迷茫,思考了半天也不知道如何是好,程序猿真的是吃青春饭的么?不管了,还是坚持2017年的目标,坚持写自己开发日记吧.

之前有个项目里面大量用到了tableview,而且还是表单形式,需要填写一些自定义的数据,UI要求数据输入框要根据内容大小来撑大.很庆幸,现在项目都是从iOS8适配,所以自然想到了AutoLayout以及tableview的estimatedRowHeight特性.

主页面UI.png -w200

图中要求标题输入,当输入内容超过设计大小,要自动撑大,下面的选项同理.增加选项可以添加更多选项.本项目的采用的是SD,以第一个标题输入框为例.

一.添加合适的约束

输入框这个Cell的约束添加:

layout.png

二.TableView的设置

设置tableview行高的估算高度:

 self.tableView.estimatedRowHeight = 50;
 self.tableView.rowHeight = UITableViewAutomaticDimension;

三.自定义可编辑Cell中的设置

要想对输入框的实时输入进行输入框的实时改变,就要监听textView的输入事件.

-(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 重新计算高度
        UITableView *tableView = [self tableView];
        [tableView beginUpdates];
        [tableView endUpdates];

       //输入框输入内容的回调
       [self.delegate TextEditCellTextChangeWithContentText:textView.text];
}
      //获取当前的cell所属的tableview
    - (UITableView *)tableView
    {
            UIView *tableView = self.superview;
            while (![tableView isKindOfClass:[UITableView class]] && tableView) {
               tableView = tableView.superview;
            }
            return (UITableView *)tableView;
    }

总结

这样一个自适应的TableViewCell就完成了,是不是很简单.如果上文有什么不对的地方,请大家指出,或者有什么问题,可以给我留言或者发消息,大家一起探讨,共同进步.

写在最后:
最近开始学习Swift了,Swift已经更新到3.0了,已经趋于稳定,发现github上越来越来的开源是Swift写的,已经掉队的感觉,所以的赶紧跟上.后面会写一些学习Swift笔记.

上一篇下一篇

猜你喜欢

热点阅读