自定义自适应uitableViewcell

多变的uitableView

在ios的开发中,uitableView是常用的控件,在开发的过程中,也在慢慢的总结,下面是我两年来不段的探索总结出来的一套方案,希望对大家有所帮助。
  1. 先从组织数据开始 个人建议在先组织好数据,这个数据不但包括NSstring等类型数据,还包括控件数据,比如头像,比如lable,一般的做法,我们是在填充cell的时候进行赋值,但是如果一个cell承载了太多的控件的话,就会引起tableview滑动卡屏,用户体验会严重下降,如果我们把所需的控件先组织好,到里面赋值控件的话,会大大优化cell的性能,当然这在一定程度上会在组织数据的时候影响性能。不说了 上代码
    OHAttributedLabel * lable = [self creatLableforText:textString];
    NSNumber *heightNum = [[NSNumber alloc] initWithFloat:lable.frame.size.height];
    [lableArray addObject:lable];

    我们在初始化数组的时候,就创建好lable,当在cell中获取的时候,直接就能取到lable

     OHAttributedLabel * la = [lableArray objectAtIndex:indexPath.row];   
     la.frame=CGRectMake(20, 14, la.frame.size.width, la.frame.size.height);
     [cell.imageViewBtn addSubview:la];

    这样在创建一些比较耗内存的控件的时候,就能大大提升cell性能
    注:如果你的程序的cell用普通的方法在很古老的ios设备上滑着都很顺畅,那么就没必要用上面的方法了。
  2. 数据完成,下面就是对于cell的定制了。一般我们很少会用到苹果默认的两种cell样式来满足我们的要求,这就需要我们自定义cell了,一般的自定义cell,我们会定义好控件,放到cell上,然后在填充cell的时候,对cell上的控件重新赋值和设置间距,这样看起来是没有什么问题的,但是,整个代码看起来总不是那么的美观,而且每次复用cell的时候,我们需要把cell上的控件位置重新设置一遍,其实我们可以在cell内部来确定控件的位置,我们只需暴漏出来lable的字符串接口即可 
    我们可以通过重写msgString的方法,来实现对msgLable的控制,包括它的任何属性,我们可以通过如下的方法调用setmsgString

    头文件
    @property(nonatomic,retain)NSString * msgString;
    - (void)setMsgString:(NSString *)msgString;
    - (NSString*)msgString;
    源文件
    - (void)setMsgString:(NSString *)msgString
    {
        if(_msgString != msgString)
        {
            [_msgString release];
            _msgString = [msgString retain];
        
        }
        _msgLable.text = _msgString;
    
        _msgLable.frame = CGRectMake(58, 30, SCREEN_WIDTH-85, self.msgHeightCell+1);
        
    }
    - (NSString*)msgString
    {
        return _msgString;
    }
    oneData.msgString = oneCircle.msgContent;
    这样在整个cell里面,代码看着就会十分整洁,在下次重用这个cell的时候,就会省很多力气
  3. 网上也有很多优化cell的东西,相信大部分人都能搜索到很多,上面是我自己总结的两个 网上的很多我给大家整理出来
    优化cell性能(网易博客)http://blog.163.com/cguess@126/blog/static/17254908120117691358952/
    对cell进行性能优化(道客巴巴) http://www.doc88.com/p-7184318039005.html
    IOS详解tableview (csdn)http://blog.csdn.net/cocoarannie/article/details/11183067
    以上都是我收藏的文章,有些营养不多,或者类似的文章看过就丢失了希望对你有帮助
  4. 下章分析代理和通知的优劣 望支持(我就是小伟哥出品) http://blog.csdn.net/zhhwww12/article/details/19118955



            • 0
              点赞
            • 0
              收藏
              觉得还不错? 一键收藏
            • 0
              评论
            评论
            添加红包

            请填写红包祝福语或标题

            红包个数最小为10个

            红包金额最低5元

            当前余额3.43前往充值 >
            需支付:10.00
            成就一亿技术人!
            领取后你会自动成为博主和红包主的粉丝 规则
            hope_wisdom
            发出的红包
            实付
            使用余额支付
            点击重新获取
            扫码支付
            钱包余额 0

            抵扣说明:

            1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
            2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

            余额充值