zoukankan      html  css  js  c++  java
  • iOS---cell-自适应高度

    RootViewController:

    //
    //  RootViewController.m
    //  UI__cell自适应高度
    //
    //  Created by dllo on 16/3/15.
    //  Copyright © 2016年 dllo. All rights reserved.
    //
    
    #import "RootViewController.h"
    #import "MyTableViewCell.h"
    #define WIDTH self.view.frame.size.width
    #define HEIGHT self.view.frame.size.height
    @interface RootViewController ()
    <
        UITableViewDataSource,
        UITableViewDelegate
    >
    
    @property (nonatomic, retain)NSArray *picArr;
    @property (nonatomic, retain)NSArray *ziArr;
    @end
    
    @implementation RootViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];
        self.tableView.backgroundColor = [UIColor cyanColor];
        [self.view addSubview:self.tableView];
        self.tableView.rowHeight = 200;
        [_tableView release];
        
        self.tableView.dataSource = self;
        self.tableView.delegate = self;
        
        self.picArr = @[@"01.jpg", @"00.jpg", @"02.jpg"];
        self.ziArr = [NSMutableArray arrayWithObjects:@"中国新闻网北京4月1日电 (万鹏)3月28日,主席出席2015年博鳌论坛年会开幕式并发表了题为《迈向命运共同体 开创亚洲新未来》的主旨演讲,他强调,“亚洲是世界的亚洲。亚洲要迈向命运共同体、开创亚洲新未来,必须在世界前进的步伐中前进、在世界发展的潮流中发展。习主席的演讲传递了哪些重要信息?国务院参事室特邀研究员保育钧,中国国际问题研究院研究员杨希雨做客人民网时谈到,习主席主旨演讲展现出“五大亮点”,再次提出“亚洲方式”的新命题,开幕式本身可谓“一带一路”的各国大合唱,让人印象深刻", @"床前明月光,疑是地上霜.举头望明月,低头思故乡", @"NBA常规赛强强对话,勇士在一度落后17分的情况下,客场以110-106逆转快船,终结对手7连胜的同时豪取10连胜。库里全场轰下27分,并在第二节运球晃倒保罗,技惊四座。快船格里芬40分,外加12篮板5助攻",nil];
      
    }
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        static NSString *reuse = @"reuse";
        MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuse];
        if (!cell) {
            cell = [[[MyTableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuse] autorelease];
        }
        cell.picImageView.image = [UIImage imageNamed:self.picArr[indexPath.row]];
        cell.newsLabel.text = self.ziArr[indexPath.row];
        return  cell;
     
    }
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
      
    }
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
        //根据图片的尺寸算出cell的高度
        UIImage *image = [UIImage imageNamed:self.picArr[indexPath.row]];
        CGFloat height = self.view.frame.size.width / image.size.width * image.size.height;
        
        //计算文字的高度
        NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:14], NSFontAttributeName, nil];//常量字符串
        CGRect rect = [self.ziArr[indexPath.row]boundingRectWithSize:CGSizeMake(375, 0) options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil];
       
        return height + rect.size.height;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        
        return self.picArr.count;
        
    }
    - (void)dealloc {
        [_tableView release];
        [super dealloc];
    }
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    /*
    #pragma mark - Navigation
    
    // In a storyboard-based application, you will often want to do a little preparation before navigation
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        // Get the new view controller using [segue destinationViewController].
        // Pass the selected object to the new view controller.
    }
    */
    
    @end

    MyTableViewCell:

    //
    //  MyTableViewCell.m
    //  UI__cell自适应高度
    //
    //  Created by dllo on 16/3/15.
    //  Copyright © 2016年 dllo. All rights reserved.
    //
    
    #import "MyTableViewCell.h"
    
    @implementation MyTableViewCell
    - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
        
        self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
        if (self) {
            [self createView];
        }
        
        return  self;
        
    }
    
    - (void)createView {
        self.picImageView = [[UIImageView alloc]init];
        [self.contentView addSubview:self.picImageView];
        [_picImageView release];
        
        self.newsLabel = [[UILabel alloc]init];
        [self.contentView addSubview:self.newsLabel];
        [_newsLabel release];
        
        self.newsLabel.font = [UIFont systemFontOfSize:14];
    }
    
    - (void)layoutSubviews {
        [super layoutSubviews];
        NSLog(@"%g", self.picImageView.image.size.width);
        //算的是imageView的尺寸
        CGFloat h = self.contentView.frame.size.width / self.picImageView.image.size.width * self.picImageView.image.size.height;
        self.picImageView.frame = CGRectMake(0, 0, self.contentView.frame.size.width, h);
        NSLog(@"%@", self.newsLabel.text);
        NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:14], NSFontAttributeName, nil];//常量字符串
        CGRect rect = [self.newsLabel.text boundingRectWithSize:CGSizeMake(375, 0) options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil];
        self.newsLabel.frame = CGRectMake(0, h, self.viewForFirstBaselineLayout.frame.size.width, rect.size.height);
        self.newsLabel.numberOfLines = 0;
    }
    
    
    
    - (void)awakeFromNib {
        // Initialization code
    
        
    }
    
    - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
        [super setSelected:selected animated:animated];
    
        // Configure the view for the selected state
    }
    
    @end
  • 相关阅读:
    MJRefreshFooterView
    UIActionSheet
    UIAlertView带textField
    SIAlertView
    旋转 锚点
    centos7.2 Apache+PHP7.2+Mysql5.6环境搭建
    ubuntu16.04 mysql 开启远程连接
    Ubuntu16.04重新安装MySQL数据库
    Ubuntu16.04彻底卸载MySQL
    laravel框架基础(2)---laravel项目加载机制
  • 原文地址:https://www.cnblogs.com/mafeng/p/5282049.html
Copyright © 2011-2022 走看看