zoukankan      html  css  js  c++  java
  • iOS中对UITableView中的cell设置自动适应行高

    该问题主要针对的是自定义tableView的cell时,在cell上添加一个UILabel用于显示内容时,由于内容的多少无法预知,所以我们要根据label上显示的文本的多少来设置cell的自动适应行高

    1,首先 先创建自定义的cell(taleview根据自己的需求进行创建)

    在.h中写属性和方法的声明

    @interface CustomTableViewCell : UITableViewCell
    @property (nonatomic, retain) UILabel *storyLabel;
    //根据传入的文本计算cell的高度
     + (CGFloat)heightOfString:(NSString *)aString;
    //根据传入的文本重新设置Label的frame
     - (void)resetLablFrame:(NSString *)aString;
    

    在.m中

    宏定义控件的基本属性

    #import "CustomTableViewCell.h"
    #define PLACE 10 //cell上控件之间以及和边界间的间距
    #define HIGHT 120 //storyLabel的高度
    @implementation CustomTableViewCell

    创建一个label,添加到cell上

    self.storyLabel = [[UILabel alloc] initWithFrame:CGRectMake( PLACE ,  PLACE , 300 , HIGHT)];
            _storyLabel.numberOfLines = 0;
            [self addSubview:_storyLabel];
            [_storyLabel release];

    实现第一个方法

    其中 CGSizeMake(300, 0)中的第一个参数是storyLabel的宽度 第二个参数0是高度,由于高度是未知的所以设置为0

    + (CGFloat)heightOfString:(NSString *)aString
    {
        CGRect rect = [aString boundingRectWithSize:CGSizeMake(300, 0) options:NSStringDrawingUsesLineFragmentOrigin | 
           NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17]}  context:nil];
        return rect.size.height + 2 * PLACE ;
    }
    
    - (void)resetLablFrame:(NSString *)aString
    {
        CGRect rect = [aString boundingRectWithSize:CGSizeMake(300, 0) options:NSStringDrawingUsesLineFragmentOrigin | 
    NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17]}  context:nil];
        
        CGRect frame = _storyLabel.frame;
       //重新设定storylabel的frame
     _storyLabel.frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, rect.size.height);
    }
    

    完成上面的步骤,我们就做完了设置工作,那么只需要调用的时候传入参数就可以实现了 那么下面就将演示如何运用

    在创建cell的时候,给方法进行赋值,这样就可以计算cell的高度

    在代理方法中实现返回cell的行高











     
     
  • 相关阅读:
    Java分层经验
    appium自动化测试之H5页面测试
    appium自动化测试日志收集-logging
    mysql查询实践题
    python每日一练之单元测试
    python每日一练之I/O实现读写csv文件
    python每日一练之读写txt文件
    selenium定位元素后,click不生效的问题。
    selenium自动化测试之浏览器滚动条
    selenium自动化测试之单选、下拉列表、alert弹窗处理、页面刷新
  • 原文地址:https://www.cnblogs.com/nsjelly/p/4314255.html
Copyright © 2011-2022 走看看