无法将图像视图设置为圆形

时间:2014-03-16 06:57:52

标签: ios uitableview uiimageview uikit

我需要制作个人资料照片图像圈(类似于什么应用程序) 我使用的单元格是UITableViewCellStyleDefault

这是我的代码:

    User *user = [DBHelper fetchUserWithUserID:userID];
    cell.imageView.image = [Helper imageWithBlob:user.profile.thumbnailPhotoBlob defaultImageFile:FILE_DEFAULT_PHOTO];
    cell.imageView.layer.cornerRadius = cell.imageView.frame.size.height /2;
    cell.imageView.clipsToBounds = YES;
    cell.imageView.layer.masksToBounds = YES;

但结果图片视图仍然是正方形

编辑:图像视图的帧是{0,0,0,0},但确实显示了图像。

编辑2:

我尝试了答案,但图片不是圆圈。这就是我所做的:

float height = [self tableView:tableView heightForRowAtIndexPath:indexPath];
[Helper circlizeImageView:cell.imageView cellHeihgt:height];


+ (void)circlizeImageView:(UIImageView *)imageView cellHeihgt:(float)cellHeight {
    imageView.frame = CGRectMake(0, 0, cellHeight, cellHeight);
    [Helper circlizeView:imageView];
}
+ (void)circlizeView:(UIView *)view {
    view.layer.cornerRadius = view.frame.size.height / 2;
    view.clipsToBounds = YES;
    view.layer.masksToBounds = YES;
}

enter image description here

2 个答案:

答案 0 :(得分:0)

这里有两个选项:

1-将imageView添加为subView到您的单元格。

2-在自定义单元格中覆盖layoutSubviews

- (void)layoutSubviews {
    [super layoutSubviews];
    self.imageView.frame = CGRectMake(0,0,40,40);
}

答案 1 :(得分:0)

代码很好。

唯一的问题是这一行:

cell.imageView.layer.cornerRadius = cell.imageView.frame.size.height/2;
//CGRect rectTest = cell.imageView.frame;
//returns a rect of (0,0,0,0) & hence the cornerRadius being set is 0.

尝试:

cell.imageView.layer.cornerRadius = 10; //or some fixed value

回想起来,你要做的事情不会让你制作imageView圆形,因为默认的imageView是矩形的(高度总是大于宽度)所以...将角半径设置为高度/宽度的一半将不起作用。

如果您使用自定义UITableViewCell并添加方框imageView,情况会更好。

ANyways ...由于默认imageView触及默认UITableViewCell的顶部并在底部结束,因此您可以通过使用高度来获取imageView的高度行(如果您有动态大小的单元格)

所以,就像这样简单:

cell.imageView.layer.cornerRadius = cell.frame.size.height/2;

但是这一切看起来都不好,因为imageView是矩形的,细胞具有动态高度会使它看起来像一个糟糕的设计(固定的半径看起来最好的imho)