你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS UI10_cell自適應高度

iOS UI10_cell自適應高度

編輯:IOS開發綜合
#import MainViewController.h
#import Cell.h

@interface MainViewController ()

@property(nonatomic, retain)NSArray *picArr;
@property(nonatomic, retain)NSMutableArray *ziArr;
@end

@implementation MainViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.navigationController.navigationBar.translucent = NO;
    self.view.backgroundColor = [UIColor greenColor];
    self.navigationItem.title=@心靜自然涼;

    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 64) style:UITableViewStylePlain];
    tableView.backgroundColor=[UIColor yellowColor];
    [self.view addSubview:tableView];
//    [tableView setEditing:YES animated:YES];


    [tableView release];

    tableView.delegate = self;
    tableView.dataSource = self;
//    //他只會執行一次,可以設置行高,但是不靈活
//    tableView.rowHeight=100;


}


- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        [self create];
    }
    return self;
}

- (void)create
{
    self.picArr = [NSArray arrayWithObjects:@1.jpg, @2.jpg, @3.jpg,nil];
    self.ziArr = [NSMutableArray arrayWithObjects:@中國共產黨新聞網北京4月1日電 (萬鵬)3月28日,習近平主席出席2015年博鳌論壇年會開幕式並發表了題為《邁向命運共同體 開創亞洲新未來》的主旨演講,他強調,“亞洲是世界的亞洲。亞洲要邁向命運共同體、開創亞洲新未來,必須在世界前進的步伐中前進、在世界發展的潮流中發展。習主席的演講傳遞了哪些重要信息?國務院參事室特邀研究員保育鈞,中國國際問題研究院研究員楊希雨做客人民網時談到,習主席主旨演講展現出“五大亮點”,再次提出“亞洲方式”的新命題,開幕式本身可謂“一帶一路”的各國大合唱,讓人印象深刻, @床前明月光,疑是地上霜.舉頭望明月,低頭思故鄉, @NBA常規賽強強對話,勇士在一度落後17分的情況下,客場以110-106逆轉快船,終結對手7連勝的同時豪取10連勝。庫裡全場轟下27分,並在第二節運球晃倒保羅,技驚四座。快船格裡芬40分,外加12籃板5助攻,nil];
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 3;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *reuse = @reuse;
    Cell *cell = [tableView dequeueReusableCellWithIdentifier:reuse];
    if (!cell) {
        cell = [[Cell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuse];
    }

    cell.cellImageView.image=[UIImage imageNamed:self.picArr[indexPath.row]];
    cell.newLabel.text=self.ziArr[indexPath.row];

    return cell;
}




#pragma mark 這個方法是tableView的delegate所提供的協議方法,主要用來設置每一行的高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    //根據圖片的尺寸設置行高
    //
    UIImage *image = [UIImage imageNamed:self.picArr[indexPath.row]];
    //通過CGSize找到image裡面圖片的尺寸
    CGSize picSize=image.size;
    //計算行高
    CGFloat rowHeight = picSize.height * self.view.frame.size.width / picSize.width;

    //計算label高
    //根據對應的文字求出cell上的label顯示的高度
    NSDictionary *fontDic=[NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:14],NSFontAttributeName, nil];
    //根據文字的大小,計算出文本的尺寸
    //還需要執行一個尺寸(375,0)
    //第三個參數,計算高度需要根據字體的哪個特征來確定
    CGRect rect = [self.ziArr[indexPath.row]boundingRectWithSize:CGSizeMake(375, 0) options:NSStringDrawingUsesLineFragmentOrigin attributes:fontDic context:nil];
    //最後把結果作為返回值返回
    return rowHeight + rect.size.height;





}





- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
//
//  Cell.h
//  UI10_cell自適應高度
//
//  Created by dllo on 15/8/11.
//  Copyright (c) 2015年 zhozhicheng. All rights reserved.
//

#import 

@interface Cell : UITableViewCell
@property(nonatomic,retain)UIImageView *cellImageView;
@property(nonatomic,retain)UILabel *newLabel;


@end
//
//  Cell.m
//  UI10_cell自適應高度
//
//  Created by dllo on 15/8/11.
//  Copyright (c) 2015年 zhozhicheng. All rights reserved.
//

#import Cell.h

@implementation Cell

-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self=[super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        [self createView];

    }
    return self;
}

-(void)createView
{
    self.cellImageView=[[UIImageView alloc] init];
    self.cellImageView.backgroundColor=[UIColor yellowColor];
    [self.contentView addSubview:self.cellImageView];
    [_cellImageView release];


    self.newLabel=[[UILabel alloc] init];
    self.newLabel.backgroundColor=[UIColor yellowColor];
    //指定label的字體大小
    //默認字體是17
    self.newLabel.font=[UIFont systemFontOfSize:14];

    self.newLabel.numberOfLines=0;
    [self.newLabel sizeToFit];

    [self.contentView addSubview:self.newLabel];
    [_newLabel release];

}

-(void)dealloc
{
    [_cellImageView release];
    [_newLabel release];
    [super dealloc];
}

-(void)layoutSubviews
{

    [super layoutSubviews];
    //讓imageView尺寸和圖片大小相同
    //因為這個方法是最後一個執行的,所以執行到這個方法的時候,已經對cell各個屬性完成賦值操作,所以可以通過imageView.image找到圖片的尺寸
    CGSize picSize = self.cellImageView.image.size;
    CGFloat height = picSize.height * self.contentView.frame.size.width / picSize.width;
    self.cellImageView.frame =CGRectMake(0, 0, self.contentView.frame.size.width, height);



    NSDictionary *fontDic=[NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:14],NSFontAttributeName, nil];
    //根據文字的大小,計算出文本的尺寸
    //還需要執行一個尺寸(375,0)
    //第三個參數,計算高度需要根據字體的哪個特征來確定
    CGRect rect = [self.newLabel.text boundingRectWithSize:CGSizeMake(375, 0) options:NSStringDrawingUsesLineFragmentOrigin attributes:fontDic context:nil];
    self.newLabel.frame=CGRectMake(0, height, self.contentView
                                   .frame.size.width, rect.size.height);



}








- (void)awakeFromNib {
    // Initialization code
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

@end

這裡寫圖片描述

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved