我有UICollectionView和UI
ImageView(如图所示).
我想把它作为圆形视图.但是,当我运行应用程序时,它显示为菱形(下图).
在(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值是正确的(它是图像宽度的一半).此外,我没有在故事板属性中进行任何手动更改(位置设置为自动布局).
我错过了什么?
解决方法
你的问题是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; }