我的UICollectionview看起来像这样:
我的UICollectionviewCell包含一个图像,通过设置角半径属性,我试图使其圆,但这是结果。我的HeaderView中的图像也是如此。
此外,当我滚动并随机改变外观时,我的UICollectionviewCells会发生变化,有些人最终是圆形的,有些甚至是菱形的,有些图标是黑色的。
以下是我用于CollectionviewCell的代码:
func collectionView(_ collectionView: UICollectionView,
cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
//1
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionViewCell",
for: indexPath) as! CollectionViewCell
cell.imageView.layoutIfNeeded()
cell.imageView.layer.masksToBounds = true
cell.backgroundColor = UIColor.clear
cell.imageView.tintColor = UIColor.white
cell.imageView.layer.borderWidth = 2
cell.imageView.layer.borderColor = UIColor.white.cgColor
cell.imageView.layer.cornerRadius = cell.frame.width/2
let icon = categories[indexPath.item]?.image
cell.nameLabel.text = categories[indexPath.item]?.name
cell.nameLabel.textColor = UIColor.white
cell.imageView.image = icon
let selected = categories[indexPath.item]?.selected
if selected! {
cell.isSelected = true
collectionView.selectItem(at: indexPath, animated: true, scrollPosition: .centeredHorizontally)
cell.imageView.backgroundColor = UIColor.white
cell.imageView.tintColor = colors.colorBottom
}
return cell
}
以下是我的HeaderView的代码:
//make the profileImageView round
imageview.layer.masksToBounds = true
imageview.layer.cornerRadius = imageview.frame.height/2
imageview.layer.borderWidth = 4
imageview.layer.borderColor = UIColor.white.cgColor
答案 0 :(得分:0)
1。要imageView
UICollectionViewCell
round
Storyboard
中的UICollectionViewCell's
:{/ 1>}
clipToBounds
true
设为UIImageView's
clipToBounds
true
设为aspectRatio
imageView
= 1:1
cellForItemAt
醇>
从cell.imageView.layoutIfNeeded()
cell.imageView.layer.masksToBounds = true
icons becoming black
2. 下面一行必须对 cell.imageView.tintColor = colors.colorBottom
selected
检查是否在选择单元格时更改categories
数组中的headerView
状态?
3。在aspectRatio
:
答案 1 :(得分:-2)
你不能假设你的单元格的框架在出列后重新计算,而是使用常量值:
cell.imageView.layer.cornerRadius = 16.0