在 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt Designer 中创建圆形按钮

如何在 swift 中创建新闻提要 UI

UITableViewCell 圆形图像视图

代码中创建的 UITabBarItem 图像不出现

更改在 UITableView 中创建的 UIButton 的图像

圆形图像视图最初在 UITableViewCell 中加载为正方形 - Xamarin.iOS