我需要制作个人资料照片图像圈(类似于什么应用程序) 我使用的单元格是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;
}
答案 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)