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

我有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;
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...