1 #import "ViewController.h" 2 #import "FirstModel.h" 3 #import "FirstTableViewCell.h" 4 #import "Tool.h" 5 @interface ViewController ()<UITableViewDataSource,UITableViewDelegate> 6 @property(nonatomic,strong) NSMutableArray *saveData; 7 @end 8 9 @implementation ViewController 10 11 - (void)viewDidLoad { 12 [super viewDidLoad]; 13 // Do any additional setup after loading the view, typically from a nib. 14 //创建UITableView 15 [self createTableView]; 16 self.saveData = [[NSMutableArray alloc] init]; 17 //创建数据 18 [self createData]; 19 20 } 21 //创建数据 22 -(void)createData 23 { 24 //使用KVC给model对象进行赋值 25 NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"1.jpg",@"imageName",@"我们有什么理由不为他们点赞呢? 我们注意到,一些创业者或者投资人,似乎并不喜欢“连续创业者”这样的称谓,仅仅因为他们觉得,这似乎意味着失败,代表了“你不行”。他们更看重的是那种连续的“成功创业者”。的确,成功本身就有说服力——不过这也并不意味着,一个成功过的创业者可以更容易地复制成功。当然,我们的焦距不会局限于曾经历失败的创业者,我们更在意的是这种持续的冒险精神和创新能力,无论是连续的成功或者曾经历失败之后的坚持,他们改变着自己,也改变着他们和我们共同生活的这个世界。如果说这个世界正变得更多元化,也更具想象力,很大程度上,这是商业的力量所致",@"text", nil]; 26 FirstModel *firstModel = [[FirstModel alloc] init]; 27 [firstModel setValuesForKeysWithDictionary:dic1]; 28 [self.saveData addObject:firstModel]; 29 30 } 31 //创建UITableView 32 -(void)createTableView 33 { 34 CGRect rect = [UIScreen mainScreen].bounds; 35 UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 20, rect.size.width, rect.size.height - 20) style:UITableViewStyleGrouped]; 36 tableView.dataSource = self; 37 tableView.delegate = self; 38 [self.view addSubview:tableView]; 39 NSLog(@"创建UITableView"); 40 41 } 42 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 43 { 44 id object = [self.saveData objectAtIndex:indexPath.row]; 45 FirstTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; 46 if (cell == nil) { 47 cell = [[FirstTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"]; 48 } 49 cell.model = object; 50 NSLog(@"添加cell"); 51 return cell; 52 } 53 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 54 { 55 CGFloat iamgeHeight = [Tool imageScaleHeightWith:@"1.jpg"]; 56 NSString *text = @"我们有什么理由不为他们点赞呢? 我们注意到,一些创业者或者投资人,似乎并不喜欢“连续创业者”这样的称谓,仅仅因为他们觉得,这似乎意味着失败,代表了“你不行”。他们更看重的是那种连续的“成功创业者”。的确,成功本身就有说服力——不过这也并不意味着,一个成功过的创业者可以更容易地复制成功。当然,我们的焦距不会局限于曾经历失败的创业者,我们更在意的是这种持续的冒险精神和创新能力,无论是连续的成功或者曾经历失败之后的坚持,他们改变着自己,也改变着他们和我们共同生活的这个世界。如果说这个世界正变得更多元化,也更具想象力,很大程度上,这是商业的力量所致"; 57 CGFloat textHeight = [Tool lableHeightWithText:text font:[UIFont systemFontOfSize:12]]; 58 NSLog(@"返回高度"); 59 return iamgeHeight + textHeight; 60 61 } 62 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 63 { 64 return self.saveData.count; 65 } 66 - (void)didReceiveMemoryWarning { 67 [super didReceiveMemoryWarning]; 68 // Dispose of any resources that can be recreated. 69 } 70 71 @end
1 #import <UIKit/UIKit.h> 2 @class FirstModel; 3 @interface FirstTableViewCell : UITableViewCell 4 @property (nonatomic,strong) UILabel *showTextLable; 5 @property (nonatomic,strong) UIImageView *showImageView; 6 @property (nonatomic,strong) FirstModel *model; 7 @end
1 #import "FirstTableViewCell.h" 2 #import "FirstModel.h" 3 #import "Tool.h" 4 @implementation FirstTableViewCell 5 6 - (void)awakeFromNib { 7 // Initialization code 8 } 9 -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 10 { 11 self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 12 if (self) { 13 self.showTextLable = [[UILabel alloc] initWithFrame:CGRectZero]; 14 self.showImageView = [[UIImageView alloc] initWithFrame:CGRectZero]; 15 [self.contentView addSubview:self.showImageView]; 16 [self.contentView addSubview:self.showTextLable]; 17 } 18 return self; 19 } 20 -(void)layoutSubviews 21 { 22 //设置空间的frame 和数据 23 CGFloat lableHeight = [Tool lableHeightWithText:self.model.text font:self.showTextLable.font]; 24 self.showTextLable.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, lableHeight); 25 self.showTextLable.numberOfLines = 0; 26 self.showTextLable.text = self.model.text; 27 28 //设置imageView 29 CGFloat imageHeight = [Tool imageScaleHeightWith:self.model.imageName]; 30 //self.imageView.frame = CGRectMake(0, lableHeight, [UIScreen mainScreen].bounds.size.width, imageHeight); 31 self.showImageView.frame = CGRectMake(0, lableHeight, [UIScreen mainScreen].bounds.size.width, imageHeight); 32 33 self.imageView.backgroundColor = [UIColor greenColor]; 34 self.showImageView.image = [UIImage imageNamed:self.model.imageName]; 35 NSLog(@"成功添加图片"); 36 } 37 38 - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 39 [super setSelected:selected animated:animated]; 40 41 // Configure the view for the selected state 42 } 43 44 @end
1 #import <Foundation/Foundation.h> 2 3 @interface FirstModel : NSObject 4 @property (nonatomic,strong) NSString *text; 5 //图片的名字 6 @property (nonatomic,strong) NSString *imageName; 7 @end
1 #import "FirstModel.h" 2 3 @implementation FirstModel 4 -(void)setValue:(id)value forUndefinedKey:(NSString *)key 5 { 6 7 } 8 @end
1 #import <Foundation/Foundation.h> 2 #import <UIKit/UIKit.h> 3 @interface Tool : NSObject 4 //创建类方法计算lable的高度 5 +(CGFloat)lableHeightWithText:(NSString *)text font:(UIFont *)font; 6 //创建类方法计算imageView的高度 7 +(CGFloat)imageScaleHeightWith:(NSString *)imageName; 8 @end
1 #import "Tool.h" 2 3 @implementation Tool 4 //创建类方法计算lable的高度 5 +(CGFloat)lableHeightWithText:(NSString *)text font:(UIFont *)font 6 { 7 NSDictionary *dic = @{NSFontAttributeName:font}; 8 CGRect rect = [text boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width, 100000) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil]; 9 return rect.size.height; 10 } 11 //创建类方法计算imageView的高度 12 13 +(CGFloat)imageScaleHeightWith:(NSString *)imageName 14 { 15 UIImage *image = [UIImage imageNamed:imageName]; 16 CGFloat width = image.size.width; 17 CGFloat height = image.size.height; 18 return height / width * [UIScreen mainScreen].bounds.size.width; 19 } 20 @end