前言
在cell中有一个imageView属性,可以设置每一个cell左边显示的图片。而默认的图片大小是根据cell的高度而决定的,我们并不能直接通过改变imageView.frame属性来达到改变图片大小的目的,因为这是一个readonly属性。
- 错误提示
- 正常设置图片
- 高度跟行高一样
cell.imageView.image = [UIImage imageNamed:@"Dog4.jpg"];
- 通过以下的代码来设置cell的imageView
- 来实现改变image的大小
UIImage *image = [UIImage imageNamed:@"Dog4.jpg"];
CGSize imageSize = CGSizeMake(80, 80);
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
CGRect imageRect = CGRectMake(0.0, 0.0, imageSize.width, imageSize.height);
[image drawInRect:imageRect];
cell.imageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsGetImageFromCurrentImageContext();
最后
注意先签<UITableViewDataSource>协议,然后设置代理,最后实现协议中下面这个方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
- 完整代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *reusableIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reusableIdentifier];
// 如果cell为nil,代表没有可重用的cell,需要创建
if (nil == cell) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reusableIdentifier] autorelease];
}
// subtitle样式,上方的label
cell.textLabel.text = [NSString stringWithFormat:@"init : %ld", indexPath.row];
// subtitle样式,下方的label
cell.detailTextLabel.text = [NSString stringWithFormat:@"Reusable : %ld", indexPath.row];
// 设置image的大小
UIImage *image = [UIImage imageNamed:@"Dog4.jpg"];
CGSize imageSize = CGSizeMake(80, 80);
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
CGRect imageRect = CGRectMake(0.0, 0.0, imageSize.width, imageSize.height);
[image drawInRect:imageRect];
cell.imageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsGetImageFromCurrentImageContext();
return cell;
}
网友评论