我的collectionview出现了一些严重的问题。 所以我取异步。来自api的一些数据并设置数据变量,而不是重新加载我的collectionview。我的collectionview基本上包含一些带有api数据的单元格和一个带有加号图标的单元格。单元格的形状和布局是相同的,所以我使用了相同的collectionviewcell类。
我计算了这样的项目数量:
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return data.count + 1
}
做我的手机这样的事情:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! OverviewUserCell
if(indexPath.row == data.count) {
cell.userImageView.image = UIImage(named: "plus")!
//some additional coloring and stuff
} else {
cell.userImageView.image = UIImage(named: "oma")!
//some additional coloring and stuff
}
cell.contentView.frame = cell.bounds
cell.contentView.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight]
cell.layer.cornerRadius = 8
return cell
}
我的单元格本身包含一个圆形图像和一个标签:
class OverviewUserCell: UICollectionViewCell {
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var userImageView: UIImageView!
override func layoutSubviews() {
super.layoutSubviews()
self.makeItCircle()
}
func makeItCircle() {
self.userImageView.layer.masksToBounds = true
self.userImageView.layer.cornerRadius = CGFloat(roundf(Float(self.userImageView.frame.size.height/2.0)))
}
}
不知何故(可能是因为不同的图像尺寸)图像视图的帧发生了变化,或类似的事情,因为加号图像不是圆的,但我希望它保持不变。我为单元格中的每个元素添加了约束。如果我不加载数据,图像是完美的圆形,但是当加载数据并重新加载集合视图时,加号图像不再是圆形。
图像的大小和位置应相同。
答案 0 :(得分:1)
尝试设置UIImageView的圆角半径,而不是设置单元格的圆角半径。但在此之前,请确保您的UIImage视图的高度应等于宽度。
在设置imageview.layer.cornerRadius = 8之前; 添加以下行:imageview.layoutIfNeeded();