在UITableviewCell中创建圆形图像而无需自定义Cell

时间:2015-12-13 11:23:31

标签: ios objective-c

我尝试将单元格上的图片视为圆圈 我不能。 我最近来的是这个椭圆

这是我的代码:

- (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;
}

3 个答案:

答案 0 :(得分:0)

当您尝试在 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;
}

答案 1 :(得分:0)

我通过提供硬编码值创建了精确的圆形图像视图。就像我的图像视图是30,我给15和圆矩形产生。因为字幕是预定义的单元格样式类型,并且其中的图像视图是可选的,在必要时创建所以当您检查cellForRowAtIndexPath中的图像视图的大小时,它给出零大小。它在初始化imageView后创建它。你必须给出恒定的半径然后它会产生圆角。

使用此代码。

iOS UITableViewCell cell.imageView setting rounded corner

如果单元格在上面的代码中为nil,也会初始化单元格。

答案 2 :(得分:0)

我得到了解决方案,请尝试以下编码

-(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;
}

谢谢 - :)