在UICollectionView中,UIImageView应该是圆形视图而不是菱形

时间:2015-08-10 20:27:32

标签: ios objective-c uiimageview uicollectionview sdwebimage

我有UICollectionView和UIImageView(如图所示)。

enter image description here

我想把它作为圆形视图。但是,当我运行应用程序时,它会显示为菱形(下图)。

enter image description here

(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值是正确的(它是图像宽度的一半)。此外,我没有在故事板属性中进行任何手动更改(位置设置为自动布局)。 我错过了什么?

4 个答案:

答案 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的高度和宽度应相同。