首页 > 代码库 > 【代码笔记】iOS-cell自动变化大小

【代码笔记】iOS-cell自动变化大小

一,效果图。

技术分享

二,工程图。

技术分享

三,代码。

RootViewController.h

#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController
<UITableViewDataSource,UITableViewDelegate>
{
    UITableView* myTableView;
    NSDictionary *dataDic;
}
@property (nonatomic , retain)NSArray* titleArray;
@property (nonatomic , retain)NSArray* contentArray;

@end

 

RootViewController.m

#import "RootViewController.h"
#import "RTLabel.h"

@interface RootViewController ()

@end

@implementation RootViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    
    self.title=@"RTLabel";
    
    [self initContentView];
    
}
- (void)initContentView
{
    //初始化标题
    self.titleArray = [NSArray arrayWithObjects:
                       @"姓名:",
                       @"年绩:",
                       @"家乡:",
                       @"介绍:",
                       nil];
    
    self.contentArray = [NSArray arrayWithObjects:
                         @"李华",
                         @"23",
                         @"河北",
                         @"我叫李华,今年23,来自河北,希望大家多多欢迎,喜欢计算机,来自河北的一个学校.111111111111111111111111111",nil];
    
    //添加列表
    myTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, self.view.bounds.size.height) style:UITableViewStylePlain];
    [myTableView setDelegate:self];
    [myTableView setDataSource:self];
    [myTableView setBackgroundColor:[UIColor clearColor]];
    [self.view addSubview:myTableView];
}
#pragma mark - tableview delegate and dataSoucre

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString* identifier = @"cell";
    
    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
        
        [cell setBackgroundColor:[UIColor clearColor]];
        
        //cell白色背景
        UIImage* bcImg = [UIImage imageNamed:@"label"];
        UIImageView* bcImgV = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(cell.frame), CGRectGetHeight(cell.contentView.frame))];
        [bcImgV setImage:bcImg];
        [cell.contentView addSubview:bcImgV];
        
        //cell中的内容
        RTLabel* nameLabel = [[RTLabel alloc] initWithFrame:CGRectMake( 10, 15, 300 , 15)];
        [nameLabel setText:[NSString stringWithFormat:@"<font face=‘Helvetica‘ size=14 color=orange> %@ </font> <font face=AmericanTypewriter size=14 color=gray> %@ </font> ",[self.titleArray objectAtIndex:indexPath.row],[self.contentArray objectAtIndex:indexPath.row]]];
        CGSize optimumSize = [nameLabel optimumSize];
        [nameLabel setFrame:CGRectMake( 10, 15, 300 , optimumSize.height)];
        [nameLabel setBackgroundColor:[UIColor clearColor]];
        [cell.contentView addSubview:nameLabel];
        
        [bcImgV setFrame:CGRectMake(0, 0, 320, 30 + optimumSize.height)];
    }
    return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    ;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    RTLabel *label = [[RTLabel alloc] initWithFrame:CGRectMake(10,10,300,100)];
    //[label setFont:[UIFont fontWithName:@"HelveticaNeue-CondensedBold" size:20]];
    [label setParagraphReplacement:@""];
    [label setText:[NSString stringWithFormat:@"<font face=‘Helvetica‘ size=14 color=orange> %@ </font> <font face=AmericanTypewriter size=14 color=gray> %@ </font> ",[self.titleArray objectAtIndex:indexPath.row],[self.contentArray objectAtIndex:indexPath.row]]];
    CGSize optimumSize = [label optimumSize];
    
    return 30 + optimumSize.height;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.titleArray.count;
}

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

@end

【代码笔记】iOS-cell自动变化大小