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
  • 相关阅读:
    CodeForces 734F Anton and School
    CodeForces 733F Drivers Dissatisfaction
    CodeForces 733C Epidemic in Monstropolis
    ZOJ 3498 Javabeans
    ZOJ 3497 Mistwald
    ZOJ 3495 Lego Bricks
    CodeForces 732F Tourist Reform
    CodeForces 732E Sockets
    CodeForces 731E Funny Game
    CodeForces 731D 80-th Level Archeology
  • 原文地址:https://www.cnblogs.com/mafeng/p/5282049.html
Copyright © 2011-2022 走看看