zoukankan      html  css  js  c++  java
  • 纯代码 mark

     

    #pragma mark - 代理方法

    // 得出方案:在这个方法返回之前就要计算cell的高度

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

    {

      

        LZJStatus *status = self.statuses[indexPath.row];

        

        CGFloat space = 10;

        /** 图像 */

        CGFloat iconX = space;

        CGFloat iconY = space;

        CGFloat iconWH = 30;

        CGRect iconImageViewFrame = CGRectMake(iconX, iconY, iconWH, iconWH);

        

        /** 正文 */

        CGFloat textX = iconX;

        CGFloat textY = CGRectGetMaxY(iconImageViewFrame) + space;

        CGFloat textW = [UIScreen mainScreen].bounds.size.width - 2 * space;

        NSDictionary *textAtt = @{NSFontAttributeName : [UIFont systemFontOfSize:14]};

        // 最大宽度是textW,高度不限制

        CGSize textSize = CGSizeMake(textW, MAXFLOAT);

        CGFloat textH = [status.text boundingRectWithSize:textSize options:NSStringDrawingUsesLineFragmentOrigin attributes:textAtt context:nil].size.height;

        CGRect text_LabelFrame = CGRectMake(textX, textY, textW, textH);

        

        CGFloat cellHeight = 0;

        /** 配图 */

        if (status.picture) { // 有配图

            CGFloat pictureWH = 100;

            CGFloat pictureX = iconX;

            CGFloat pictureY = CGRectGetMaxY(text_LabelFrame) + space;

            CGRect pictureImageViewFrame = CGRectMake(pictureX, pictureY, pictureWH, pictureWH);

            cellHeight = CGRectGetMaxY(pictureImageViewFrame) + space;

        } else {

            cellHeight = CGRectGetMaxY(text_LabelFrame) + space;

        }

     

      // self-sizing(iOS8 以后)

        // 告诉tableView所有cell的真实高度是自动计算的(根据设置的约束)

        self.tableView.rowHeight = UITableViewAutomaticDimension;

        // 设置估算高度

        //self.tableView.estimatedRowHeight = 44;

     

     

        return cellHeight;

    }

    @end

     

     

     ----------------------------------------------------------------------

    #define LZJTextFont [UIFont systemFontOfSize:14]

    #define LZJNameFont [UIFont systemFontOfSize:14]

    @interface LZJStatusCell ()

     

    /** 图像 */

    @property (nonatomic, weak) UIImageView *iconImageView;

    /** 昵称 */

    @property (nonatomic, weak) UILabel *nameLabel;

    /** vip */

    @property (nonatomic, weak) UIImageView *vipImageView;

    /** 正文 */

    @property (nonatomic, weak) UILabel *text_Label;

    /** 配图 */

    @property (nonatomic, weak) UIImageView *pictureImageView;

    @end

     

    @implementation XMGStatusCell

     

    // 添加子控件的原则:把所有有可能显示的子控件都先添加进去

    - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

    {

        if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {

            /** 图像 */

            UIImageView *iconImageView = [[UIImageView alloc] init];

            [self.contentView addSubview:iconImageView];

            self.iconImageView = iconImageView;

            

            /** 配图 */

            UIImageView *pictureImageView = [[UIImageView alloc] init];

            [self.contentView addSubview:pictureImageView];

            self.pictureImageView = pictureImageView;

            

            /** vip */

            UIImageView *vipImageView = [[UIImageView alloc] init];

            vipImageView.contentMode = UIViewContentModeCenter;

            vipImageView.image = [UIImage imageNamed:@"vip"];

            [self.contentView addSubview:vipImageView];

            self.vipImageView = vipImageView;

            

            /** 昵称 */

            UILabel *nameLabel = [[UILabel alloc] init];

            nameLabel.font = LZJNameFont;

            [self.contentView addSubview:nameLabel];

            self.nameLabel = nameLabel;

            

            /** 正文 */

            UILabel *text_Label = [[UILabel alloc] init];

            text_Label.font = LZJTextFont;

            text_Label.numberOfLines = 0;

            [self.contentView addSubview:text_Label];

            self.text_Label = text_Label;

        }

        return self;

    }

     

    - (void)layoutSubviews

    {

        [super layoutSubviews];

        CGFloat space = 10;

         /** 图像 */

        CGFloat iconX = space;

        CGFloat iconY = space;

        CGFloat iconWH = 30;

        self.iconImageView.frame = CGRectMake(iconX, iconY, iconWH, iconWH);

        

        /** 昵称 */

        CGFloat nameX = CGRectGetMaxX(self.iconImageView.frame) + space;

        CGFloat nameY = iconY;

        NSDictionary *nameAtt = @{NSFontAttributeName : LZJNameFont};

        // 计算昵称文字的尺寸

        CGSize nameSize = [self.status.name sizeWithAttributes:nameAtt];

        CGFloat nameW = nameSize.width;

        CGFloat nameH = nameSize.height;

        self.nameLabel.frame = CGRectMake(nameX, nameY, nameW, nameH);

        

        /** vip */

        if (self.status.isVip) {

            CGFloat vipX = CGRectGetMaxX(self.nameLabel.frame) + space;

            CGFloat vipW = 14;

            CGFloat vipH = nameH;

            CGFloat vipY = nameY;

            self.vipImageView.frame = CGRectMake(vipX, vipY, vipW, vipH);

        }

        

        /** 正文 */

        CGFloat textX = iconX;

        CGFloat textY = CGRectGetMaxY(self.iconImageView.frame) + space;

        CGFloat textW = self.contentView.frame.size.width - 2 * space;

        NSDictionary *textAtt = @{NSFontAttributeName : LZJTextFont};

        // 最大宽度是textW,高度不限制

        CGSize textSize = CGSizeMake(textW, MAXFLOAT);

        CGFloat textH = [self.status.text boundingRectWithSize:textSize options:NSStringDrawingUsesLineFragmentOrigin attributes:textAtt context:nil].size.height;

        self.text_Label.frame = CGRectMake(textX, textY, textW, textH);

        

         /** 配图 */

        if (self.status.picture) { // 有配图

            CGFloat pictureWH = 100;

            CGFloat pictureX = iconX;

            CGFloat pictureY = CGRectGetMaxY(self.text_Label.frame) + space;

            self.pictureImageView.frame = CGRectMake(pictureX, pictureY, pictureWH, pictureWH);

        }

        

        

    }

     

    - (void)setStatus:(LZJStatus *)status

    {

        _status = status;

        self.iconImageView.image = [UIImage imageNamed:status.icon];

        self.nameLabel.text = status.name;

        

        if (status.isVip) {

            self.nameLabel.textColor = [UIColor orangeColor];

            self.vipImageView.hidden = NO;

        } else {

            self.vipImageView.hidden = YES;

            self.nameLabel.textColor = [UIColor blackColor];

        }

        

        self.text_Label.text = status.text;

        

        if (status.picture) { // 有配图

            self.pictureImageView.hidden = NO;

            self.pictureImageView.image = [UIImage imageNamed:status.picture];

        } else { // 无配图

            self.pictureImageView.hidden = YES;

        }

        

    }

     

    @end

  • 相关阅读:
    原生态 php连接mysql
    sql查询慢 查找
    死锁查询和处理
    linq详细案例
    linq深入
    DataTable 与XML 交互
    DataTable运用
    通过反射修改已有数组的大小
    通过反射取得并修改数组信息
    通过反射机制直接操作属性
  • 原文地址:https://www.cnblogs.com/liuzhenjie/p/5448922.html
Copyright © 2011-2022 走看看