我有UICollectionView和UIImageView(如图所示)。
我想把它作为圆形视图。但是,当我运行应用程序时,它会显示为菱形(下图)。
在(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath {
我将其设置为
[cell.photo setImageWithURL:[NSURL URLWithString:url] usingActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
cell.photo.layer.cornerRadius = cell.photo.bounds.size.width / 2;
cell.photo.layer.masksToBounds = NO;
cell.photo.clipsToBounds = YES;
对于设置图像,我使用了libs SDWebImage
并且我确定,cornerRadius值是正确的(它是图像宽度的一半)。此外,我没有在故事板属性中进行任何手动更改(位置设置为自动布局)。 我错过了什么?
答案 0 :(得分:8)
您的问题是在cellForItemAtIndexPath:
之后可以重新布局单元格,并且单元格的大小将在其后更改。
为您解决方案:
1)将cell.photo.layer.cornerRadius = cell.photo.bounds.size.width / 2;
放入
- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath
2)为UICollectionCell
创建自定义类并覆盖layoutSubviews
函数:
- (void)layoutSubviews {
[super layoutSubviews];
self.photo.layer.cornerRadius = self.frame.size.width / 2.0;
}
答案 1 :(得分:3)
这对我帮助很大。
在UICollectionViewCell的子类中,CustomCell.m:
-(void)layoutSubviews
{
[super layoutSubviews];
[self layoutCell];
}
-(void)layoutCell
{
[self layoutIfNeeded];
[[imgThumbView layer] setCornerRadius:imgThumbView.bounds.size.width/2];
[[imgThumbView layer] setBorderColor:[UIColor redColor];
[[imgThumbView layer] setBorderWidth:1.5f];
[[imgThumbView layer] setMasksToBounds:YES];
}
答案 2 :(得分:0)
要使图像成为圆形,您必须确保框架是完美的正方形,并将圆角半径设置为大约60或更小。 这对我有用,希望对你有帮助!
答案 3 :(得分:0)
您的cornerRadius值是正确的,但cell.photo.layer.masksToBounds = NO;
错误地将其设置为cell.photo.layer.masksToBounds = YES;
,如果仍然无法正常工作,请确保ImageView
的高度和宽度应相同。