IOS 動態改變cell的高度 – iPhone手機開發技術文章 iPhone軟體開發教學課程

#import "ViewController.h"

 

@interface ViewController ()

{

    UITableView *_table;

    NSMutableArray *_dataList;

    UIView *footView;

}

@end

 

@implementation ViewController

 

– (void)viewDidLoad

{

    [super viewDidLoad];

    _table=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

    _table.delegate=self;

    _table.dataSource=self;

    //_table.multipleTouchEnabled=YES;

    [self.view addSubview:_table];

    _dataList=[[NSMutableArray alloc]initWithObjects:@"1111\n111\n111\n111\n",@"222",@"333",@"444",@"555",@"666",@"777", nil];

    footView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 80)];

    footView.backgroundColor=[UIColor yellowColor];

    _table.tableFooterView=footView;

}

 

– (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

 

#pragma mark – UITableView 

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    return 1;

}

 

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

{

    return [_dataList count];

}

 

 

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

     

 static NSString *CellIdentifier = @"Cell";

 

 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

 if (cell == nil) {

 cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;

 UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];

 label.tag = 1;

 //label.lineBreakMode = UILineBreakModeCharacterWrap;

 label.lineBreakMode=NSLineBreakByCharWrapping;

 label.highlightedTextColor = [UIColor whiteColor];

 label.numberOfLines = 0;

 label.opaque = NO; // 選中Opaque表示視圖後面的任何內容都不應該繪制

 label.backgroundColor = [UIColor clearColor];

 [cell.contentView addSubview:label];

 

 }

 

 UILabel *label = (UILabel *)[cell viewWithTag:1];

 NSString *text;

 text = [_dataList objectAtIndex:indexPath.row];

 CGRect cellFrame = [cell frame];

 cellFrame.origin = CGPointMake(0, 0);

 

 label.text = text;

 CGRect rect = CGRectInset(cellFrame, 2, 2);

 label.frame = rect;

 [label sizeToFit];

 if (label.frame.size.height > 46) {

 cellFrame.size.height = 50 + label.frame.size.height – 46;

 }

 else {

 cellFrame.size.height = 50;

 }

 [cell setFrame:cellFrame];

 

 return cell;

 }

 

 – (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

 {

 UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];

 return cell.frame.size.height;

 }

 

@end

 

效果是這樣的

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *