ios學習--table cell定製

h文件:

 

#import @interface MyTableCellUtil : NSObject { UIColor *tabletextcolor;//自定義tablecell裏面的自體顏色 } @property(nonatomic,retain) UIColor *tabletextcolor;//自定義tablecell裏面的自體顏色 - (UIView *)tabcellview:(NSString *)text addImage:(UIImage *)myimage; - (UIView *)tabcellview:(NSString *)text; - (UIView *)tabcellview:(NSString *)text addImage:(UIImage *)myimage addusername:(NSString *)username; @end

 

m文件:

 #import "MyTableCellUtil.h" 
 
 
@implementation MyTableCellUtil 
@synthesize tabletextcolor; 
 
-(void)dealloc{ 
    [tabletextcolor release]; 
    [super dealloc]; 

 
-(id)init{ 
    [super init]; 
    tabletextcolor = [UIColor whiteColor]; 
     
    return self; 

 
//有文字有圖片 
- (UIView *)tabcellview:(NSString *)text addImage:(UIImage *)myimage{ 
    //行的總view 
    UIView *tablecellview = [[UIView alloc] initWithFrame:CGRectZero]; 
    tablecellview.backgroundColor = [UIColor clearColor]; 
    //行的背景圖片 
    UIImage *bubble = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"2cell" ofType:@"png"]]; 
    UIImageView *bubbleImageView = [[UIImageView alloc] initWithImage:[bubble stretchableImageWithLeftCapWidth:21 topCapHeight:14]]; 
    //行中的文字部分 
    UIFont *font = [UIFont systemFontOfSize:13]; 
    CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(200.0f, 1000.0f) lineBreakMode:  UILineBreakModeWordWrap]; 
     
    UILabel *bubbleText = [[UILabel alloc] initWithFrame:CGRectMake(110.0f, 10.0f, size.width, size.height)]; 
    bubbleText.backgroundColor = [UIColor clearColor]; 
    bubbleText.font = font; 
    bubbleText.numberOfLines = 0; 
    bubbleText.lineBreakMode = UILineBreakModeWordWrap; 
    bubbleText.text = text; 
    bubbleText.textColor = self.tabletextcolor; 
    //行中的圖片部分 
    UIImageView *oneavatarImageView = [[UIImageView alloc] initWithImage:[myimage stretchableImageWithLeftCapWidth:21 topCapHeight:14]]; 
     
    if (size.height>=80) {//如果文字的高度大於圖片的高度就設置cell的高度爲文字的高度加上 
        bubbleImageView.frame = CGRectMake(0, 0, 310, bubbleText.frame.size.height+20); 
    }else{//否則就設置爲圖片的高度加上14,也就是110,圖片這裏寫死爲96 
        bubbleImageView.frame = CGRectMake(0, 0, 310, 80); 
    } 
     
    //添加分割線圖片 
    UIImage *linerview = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"2line" ofType:@"png"]]; 
    UIImageView *lineImageView = [[UIImageView alloc] initWithImage:[linerview stretchableImageWithLeftCapWidth:21 topCapHeight:14]]; 
    lineImageView.frame = CGRectMake(0, bubbleImageView.frame.size.height, 320, 10); 
     
    //設置行的總view的frame 
    tablecellview.frame = CGRectMake(0, 0, 320,bubbleImageView.frame.size.height+lineImageView.frame.size.height ); 
     
    //設置行中圖片的frame 
    oneavatarImageView.frame = CGRectMake(10.0f, (bubbleImageView.frame.size.height/2)-39.0f, 78.0f, 78.0f); 
     
    [bubbleImageView addSubview:oneavatarImageView]; 
    [oneavatarImageView release]; 
    [bubbleImageView addSubview:bubbleText]; 
    [bubbleText release]; 
    [tablecellview addSubview:bubbleImageView]; 
    [bubbleImageView release]; 
    [tablecellview addSubview:lineImageView]; 
    [lineImageView release]; 
     
     
    return [tablecellview autorelease]; 
 

 
//只有文字 
- (UIView *)tabcellview:(NSString *)text{ 
    //行的總view 
    UIView *tablecellview = [[UIView alloc] initWithFrame:CGRectZero]; 
    tablecellview.backgroundColor = [UIColor clearColor]; 
    //行的背景圖片 
    UIImage *bubble = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"2cellTwo" ofType:@"png"]]; 
    UIImageView *bubbleImageView = [[UIImageView alloc] initWithImage:[bubble stretchableImageWithLeftCapWidth:21 topCapHeight:14]]; 
    //行中的文字部分 
    UIFont *font = [UIFont systemFontOfSize:16]; 
    CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(300.0f, 1000.0f) lineBreakMode:  UILineBreakModeWordWrap]; 
     
    UILabel *bubbleText = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, 10.0f, size.width+10, size.height+10)]; 
    bubbleText.backgroundColor = [UIColor clearColor]; 
    bubbleText.font = font; 
    bubbleText.numberOfLines = 0; 
    bubbleText.lineBreakMode = UILineBreakModeWordWrap; 
    bubbleText.text = text; 
    bubbleText.textColor = self.tabletextcolor; 
     
    //添加分割線圖片 
    UIImage *linerview = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"2line" ofType:@"png"]]; 
    UIImageView *lineImageView = [[UIImageView alloc] initWithImage:[linerview stretchableImageWithLeftCapWidth:21 topCapHeight:14]]; 
    lineImageView.frame = CGRectMake(0,bubbleText.frame.size.height+20, 320, 1); 
 
     
    //設置行背景圖片的frame 
      bubbleImageView.frame = CGRectMake(0, 0, 320, bubbleText.frame.size.height+20+lineImageView.frame.size.height); 
     
    //設置行的總view的frame 
    tablecellview.frame = CGRectMake(0, 0, 320,bubbleImageView.frame.size.height);     
     
    [bubbleImageView addSubview:bubbleText]; 
    [bubbleText release]; 
    [bubbleImageView addSubview:lineImageView]; 
    [lineImageView release]; 
    [tablecellview addSubview:bubbleImageView]; 
    [bubbleImageView release]; 
 
     
     
    return [tablecellview autorelease]; 
 

 
 
//行程微博的cellview 
- (UIView *)tabcellview:(NSString *)text addImage:(UIImage *)myimage addusername:(NSString *)username{ 
     
 
    //行的總view 
    UIView *tablecellview = [[UIView alloc] initWithFrame:CGRectZero]; 
    tablecellview.backgroundColor = [UIColor clearColor]; 
    //行的背景圖片 
    UIImage *bubble = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"2cell" ofType:@"png"]]; 
    UIImageView *bubbleImageView = [[UIImageView alloc] initWithImage:[bubble stretchableImageWithLeftCapWidth:21 topCapHeight:14]]; 
    //行中的文字部分 
    UIFont *font = [UIFont systemFontOfSize:13]; 
    CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(200.0f, 1000.0f) lineBreakMode:  UILineBreakModeWordWrap]; 
     
    UILabel *bubbleText = [[UILabel alloc] initWithFrame:CGRectMake(110.0f, 10.0f, size.width, size.height)]; 
    bubbleText.backgroundColor = [UIColor clearColor]; 
    bubbleText.font = font; 
    bubbleText.numberOfLines = 0; 
    bubbleText.lineBreakMode = UILineBreakModeWordWrap; 
    bubbleText.text = text; 
    bubbleText.textColor = self.tabletextcolor; 
    //行中的圖片部分 
    UIImageView *oneavatarImageView = [[UIImageView alloc] initWithImage:[myimage stretchableImageWithLeftCapWidth:21 topCapHeight:14]]; 
     
    //發表微博的人 
    UIButton *mybuttonp = [UIButton buttonWithType:UIButtonTypeCustom]; 
    CGRect  frame = CGRectMake(160,  bubbleText.frame.size.height+20, 150, 20); 
    mybuttonp.frame = frame; 
    [mybuttonp setTitle:[NSString stringWithFormat:@"發表人:%@",username] forState:UIControlStateNormal]; 
    // [mybuttonshang addTarget:self action:@selector(buttonViewChat) forControlEvents:UIControlEventTouchUpInside]; 
    mybuttonp.backgroundColor = [UIColor clearColor]; 
    mybuttonp.titleLabel.textColor = self.tabletextcolor; 
    mybuttonp.titleLabel.font = [UIFont systemFontOfSize:13]; 
    //設置背景圖片的frame 
    if (size.height+20+mybuttonp.frame.size.height>=80) {//如果文字的高度大於圖片的高度就設置cell的高度爲文字的高度加上 
        bubbleImageView.frame = CGRectMake(0, 0, 310, bubbleText.frame.size.height+20+mybuttonp.frame.size.height); 
    }else{//否則就設置爲圖片的高度加上14,也就是110,圖片這裏寫死爲96 
        bubbleImageView.frame = CGRectMake(0, 0, 310, 80); 
    } 
     
    
     
    //添加分割線圖片 
    UIImage *linerview = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"2line" ofType:@"png"]]; 
    UIImageView *lineImageView = [[UIImageView alloc] initWithImage:[linerview stretchableImageWithLeftCapWidth:21 topCapHeight:14]]; 
    lineImageView.frame = CGRectMake(0, bubbleImageView.frame.size.height, 320, 10); 
     
    //設置行的總view的frame 
    tablecellview.frame = CGRectMake(0, 0, 320,bubbleImageView.frame.size.height+lineImageView.frame.size.height ); 
     
    //設置行中圖片的frame 
    oneavatarImageView.frame = CGRectMake(10.0f, (bubbleImageView.frame.size.height/2)-39.0f, 78.0f, 78.0f); 
     
    [bubbleImageView addSubview:oneavatarImageView]; 
    [oneavatarImageView release]; 
    [bubbleImageView addSubview:bubbleText]; 
    [bubbleText release]; 
    [bubbleImageView addSubview:mybuttonp]; 
   // [mybuttonp release]; 
    [tablecellview addSubview:bubbleImageView]; 
    [bubbleImageView release]; 
    [tablecellview addSubview:lineImageView]; 
    [lineImageView release]; 
     
     
    return [tablecellview autorelease]; 
 

@end 

發佈了20 篇原創文章 · 獲贊 6 · 訪問量 45萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章