在 UITableviewCell 中创建圆形图像而不自定义 Cell
Posted
技术标签:
【中文标题】在 UITableviewCell 中创建圆形图像而不自定义 Cell【英文标题】:Creating a circular image in UITableviewCell without customizing Cell 【发布时间】:2015-12-13 11:23:31 【问题描述】:我尝试将单元格上的图片视为一个圆圈 而我不能。 最近我来到这个椭圆
这是我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.imageView.clipsToBounds = YES;
cell.imageView.layer.cornerRadius = cell.imageView.frame.size.width / 2.0;
cell.imageView.layer.borderWidth = 2.0;
cell.imageView.layer.borderColor = [UIColor blueColor].CGColor;
cell.imageView.image=[UIImage imageWithData:[picCoreData valueForKey:@"image"]];//i get the picture from core data.
return cell;
【问题讨论】:
您的图像视图的大小是否为正方形意味着宽度 = 高度? 我不知道,单元格是一种类型的字幕,我试图用 NSRange 得到它给我的大小 0 尝试在调整 imageView 之前设置图像以具有cornerRadius - 我认为字幕单元格中的 imageView 正在为您设置的每个图像设置 imageView 大小。 我试过了,还是椭圆 【参考方案1】:当您尝试在 cellForRowAtIndexPath 中访问它时,未设置 imageView 正确的框架。试试这个:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
CGSize itemSize = CGSizeMake(40, 40);
UIGraphicsBeginImageContextWithOptions(itemSize, NO, UIScreen.mainScreen.scale);
CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height);
[cell.imageView.image drawInRect:imageRect];
cell.imageView.clipsToBounds = YES;
cell.imageView.layer.cornerRadius = itemSize.width / 2.0;
cell.imageView.layer.borderWidth = 2.0;
cell.imageView.layer.borderColor = [UIColor blueColor].CGColor;
cell.imageView.image=[UIImage imageWithData:[picCoreData valueForKey:@"image"]];
UIGraphicsEndImageContext();
return cell;
【讨论】:
【参考方案2】:我通过提供硬编码值创建了精确的圆形图像视图。就像我的图像视图是 30 一样,我给出 15 并产生圆形矩形。因为 subtitle 是预定义的单元格样式类型,并且其中的图像视图是可选的,它是在必要时创建的所以当您检查 cellForRowAtIndexPath 中的图像视图的大小时,它会给出零大小。它在 imageView 初始化后创建它。您必须给出恒定的半径,然后它才会产生圆角。
使用此代码。
ios UITableViewCell cell.imageView setting rounded corner.
如果单元格在上面的代码中为 nil,也初始化单元格。
【讨论】:
【参考方案3】:我得到了解决方案,请尝试以下编码
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
return 60;
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *str = @"cell";
UITableViewCell *cell = [tableViewImageView dequeueReusableCellWithIdentifier:str];
if(cell==nil)
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:str];
UIImageView *imageRound = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];
imageRound.layer.masksToBounds = YES;
imageRound.layer.cornerRadius = 25;
imageRound.layer.borderWidth = 2.0;
imageRound.layer.borderColor = [UIColor blueColor].CGColor;
[cell.contentView addSubview:imageRound];
cell.imageView.image = [UIImage imageNamed:@"give your image name here"];
return cell;
谢谢你-:)
【讨论】:
以上是关于在 UITableviewCell 中创建圆形图像而不自定义 Cell的主要内容,如果未能解决你的问题,请参考以下文章