forkingdog 和 masonry 实现自动计算行高

#import "TableViewController.h"
#import "fdModel.h"
#import "fdTableViewCell.h"
#import <MJExtension.h>
#import "UITableView+FDTemplateLayoutCell.h"

@interface TableViewController ()

@property (nonatomic, copy) NSArray *fdArray;

@end

@implementation TableViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.tableView registerClass:[fdTableViewCell class] forCellReuseIdentifier:@"cell"];
//    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    self.tableView.backgroundColor = [UIColor colorWithRed:231/255.0 green:231/255.0 blue:231/255.0 alpha:1];
}

#pragma mark - Table view data source

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return self.fdArray.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    fdTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    cell.fdModel = self.fdArray[indexPath.row];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}

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

    return [self.tableView fd_heightForCellWithIdentifier:@"cell" cacheByIndexPath:indexPath configuration:^(fdTableViewCell *cell) {
        cell.fdModel = self.fdArray[indexPath.row];
    }];
}

#pragma mark - lazyLoad
- (NSArray *)fdArray {

    if (_fdArray == nil) {
        _fdArray = [[NSArray alloc] init];
        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"microblog" ofType:@"plist"];
        _fdArray = [fdModel objectArrayWithFile:filePath];
    }
    return _fdArray;
}

cell  布局

#import "fdTableViewCell.h"
#import "fdModel.h"
#import <Masonry.h>

@interface fdTableViewCell ()

@property (nonatomic, strong) UIView *publicView;

@property (nonatomic, strong) UILabel *textLab;

@property (nonatomic, strong) UILabel *nameLable;

@property (nonatomic, strong) UIImageView *iconView;

@property (nonatomic, strong) UIImageView *vipView;

@property (nonatomic, strong) UIImageView *picView;

@end

@implementation fdTableViewCell

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

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

        [self createView];
        [self setViewAutoLayout];
    }
    return self;
}

- (void)createView {

    self.publicView = [[UIView alloc] init];
    [self.contentView addSubview:self.publicView];

    self.iconView = [[UIImageView alloc] init];
    [self.publicView addSubview:self.iconView];

    self.nameLable = [[UILabel alloc] init];
    [self.publicView addSubview:self.nameLable];

    self.vipView = [[UIImageView alloc] init];
    self.vipView.image = [UIImage imageNamed:@"vip"];
    [self.publicView addSubview:self.vipView];

    self.textLab = [[UILabel alloc] init];
    self.textLab.numberOfLines = 0;
    [self.publicView addSubview:self.textLab];

    self.picView = [[UIImageView alloc] init];
    [self.publicView addSubview:self.picView];
}

- (void)setViewAutoLayout {

    [self.publicView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.top.equalTo(@10);
        make.left.equalTo(@10);
        make.right.equalTo(@-10);// 这里是重点。。。
        make.bottom.equalTo(self.contentView.mas_bottom).with.offset(-10);
    }];

    [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.top.equalTo(@10);
        make.left.equalTo(@10);
        make.width.equalTo(@44);
        make.height.equalTo(@44);
    }];

    [self.nameLable mas_makeConstraints:^(MASConstraintMaker *make) {

        make.top.equalTo(@10);
        make.left.equalTo(self.iconView.mas_right).with.offset(10);
    }];
    [self.nameLable sizeToFit];

    [self.vipView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.top.equalTo(@10);
        make.left.equalTo(self.nameLable.mas_right).with.offset(10);
        make.height.equalTo(@15);
        make.width.equalTo(@15);
    }];

    [self.textLab mas_makeConstraints:^(MASConstraintMaker *make) {

        make.top.equalTo(self.iconView.mas_bottom).with.offset(10);
        make.left.equalTo(self.iconView);
        make.right.equalTo(@-20);
    }];

    [self.picView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.top.equalTo(self.textLab.mas_bottom).with.offset(10);
        make.left.equalTo(self.textLab);

// 这个是重点。。。
        make.bottom.equalTo(self.contentView);
    }];

}

- (void)setFdModel:(fdModel *)fdModel {
    _fdModel = fdModel;
    self.iconView.image = [UIImage imageNamed:fdModel.icon];
    self.nameLable.text = fdModel.name;
    self.vipView.hidden = (![fdModel.vip isEqual:@1]);
    self.textLab.text = fdModel.text;
    self.picView.image = [fdModel.picture length] > 0 ? [UIImage imageNamed:fdModel.picture] : nil;
}
时间: 2024-12-11 16:21:24

forkingdog 和 masonry 实现自动计算行高的相关文章

ios label 自动计算行高详解

在OC当中自动计算行高主要调用系统的 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #ffffff } span.s1 { } span.s2 { color: #00b1ff } span.s3 { color: #de38a6 } span.s4 { color: #eb905a } span.s5 { color: #8b87ff } - (--boundingRectWithSize:(CGSize)

XE7 ListView 自动计算行高

说明:展示 ListView 视其每一行 Item 的 Detail 字串长度自动调整高度(可每行高度不同). 适用:Delphi XE7 源码下载:[原创]ListView_自动计算行高(by龟山阿卍).zip procedure TForm1.Button1Click(Sender: TObject); const DetailStr: array[0..2] of String = ('1234567890123456789012345678901234567890123456789012

post文件上传 tableview行高计算的优化 版本控制

Post上传 都是封装在请求体中的 1. 文件上传????????????? 设置头像/产品评论  iOS中更没有封装  需要你自己去安iOS实现  最复杂的 2.上传文件使用POST还是PUT请求???? POST请求体没有长度限制  需要你把上传的内容封装在请求体中 3.AFN中的POST请求 创建网络工具管理类 AFHTTPManager  *manager 悬着请求方法 manager post 把字典传递进去 AFN 的一个缺点  就是在请求到数句了解析数据出错的时候了 不应该在失败

wpf datagrid row height 行高自动计算使每行行高自适应文本

wpf 的datagrid的行高 要么是Auto,要么是定值:但会带来麻烦就是每行行高都一样. 当需要按内容(主要是wrap 换行的textbox或textblock)来动态调整行高的时候,需要用到dataGrid的LoadingRow 事件. 参考两个网页: http://stackoverflow.com/questions/9264398/how-to-calculate-wpf-textblock-width-for-its-known-font-size-and-characters

iOS开发tips-UITableView、UICollectionView行高/尺寸自适应

UITableView 我们都知道UITableView从iOS 8开始实现行高的自适应相对比较简单,首先必须设置estimatedRowHeight给出预估高度,设置rowHeight为UITableViewAutomaticDimension(注意:如果不修改rowHeight默认就是UITableViewAutomaticDimension),对于这两个参数除了直接修改tableview对应的属性之外仍然支持使用对应的代理方法设置.最后只要在UITableViewCell中设置conten

自动布局下的自定义行高约束问题

昨天晚上被自动布局里自定义行高磨了一晚上,简直快要疯掉.我是利用Masonry来进行自动布局的,布局很简单,就是cell里面放两个label,可是,在我添加完约束之后,控制台就会打印一大堆东西,约束是这样的: _titleLab.font = [UIFont systemFontOfSize:28*TTScreenWith/640]; [_titleLab mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.mas_equ

line-height 行高

line-height 行高指一行文字的高度,具体来说是指两行文子间基线间的距离      line-height 与 font-size 的计算值之差(行距)分为两半,分别加到一个文本行内容的顶部和底部.可以包含这些内容的最小框就是行框. 行高是指上下文本行的基线间的垂直距离,即图中两条红线间垂直距离. 行距是指一行底线到下一行顶线的垂直距离,即第一行粉线和第二行绿线间的垂直距离. 半行距是行距的一半,即区域3垂直距离/2,区域1,2,3,4的距离之和为行高,而区域1,2,4距离之和为字体si

tableView计算动态行高的总结

研究tableView怎么计算动态行高研究了两天一直还不太会,今天最终做出来了想要的效果. 首先.我在网上搜集了非常多资料,各种大神的总结,然后開始看.研究.试验,基本思路都是一样的. 1.一定要将label的numberOfLine设为0 2.获得文字信息所须要的size 3.将label的height设为titleSize.height 4.在- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIn

【转】css行高line-height的一些深入理解及应用

一.前言 前两天在腾讯ISD团队博客上看到一篇翻译的文章“深入理解css 行高”,是个不错的文章,学到了不少东西,建议您看看. 这里,我也要讲讲我对line-height的一些理解,所讲解的东西绝大多数与上面提到的“深入理解css 行高”是不重复的,可以说是补充或是另外一个角度的思考.另外,将结合实际,展示line-height的一些特性和一些常见应用,帮助您对css行高line-height的理解.所讲述的并不一定都是正确的,欢迎指正欢迎交流. 二.一些字面意思“行高”顾名思意指一行文字的高度