UICollectionViewCell 的 contentView 背景层覆盖内容
Posted
技术标签:
【中文标题】UICollectionViewCell 的 contentView 背景层覆盖内容【英文标题】:UICollectionViewCell's contentView background layers over the content 【发布时间】:2021-12-28 10:55:11 【问题描述】:我有一个使用 UICollectionViewCell 的 collectionView
collectionView.register(CustomCell.self, forCellWithReuseIdentifier: CustomCell.identifier)
我正在使用 isSelected 变量来更改所选单元格的背景。
class CategoryCell: UICollectionViewCell
override var isSelected: Bool
didSet
if self.isSelected
self.contentView.backgroundColor = UIColor(hexString: "#f0f0f0")
else
self.contentView.backgroundColor = UIColor.clear
但是背景颜色会应用到单元格的内容上,如下所示。
在 ios 13 上不是这样的。我认为它从 ios 14 或 15 开始发生。知道吗?提前谢谢你。
编辑:
class CategoryCell: UICollectionViewCell
override init(frame: CGRect)
super.init(frame: frame)
setupViews()
self.backgroundColor = UIColor.white
let myImage: UIImageView =
let image = UIImageView()
image.translatesAutoresizingMaskIntoConstraints = false
return image
()
let myLabel: UILabel =
let label = UILabel()
label.text = "Custom Text"
label.textAlignment = .center
label.translatesAutoresizingMaskIntoConstraints = false
label.minimumScaleFactor = 0.2
label.adjustsFontSizeToFitWidth = true
return label
()
func setupViews()
addSubview(myImage)
addSubview(myLavel)
/*setup auto layout*/
static var identifier: String
return String(describing: self)
required init?(coder aDecoder: NSCoder)
fatalError("init(coder:) has not been implemented")
override var isSelected: Bool
didSet
if self.isSelected
self.contentView.backgroundColor = UIColor(hexString: "#f0f0f0")
else
self.contentView.backgroundColor = UIColor.clear
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let customCell = collectionView.dequeueReusableCell(withReuseIdentifier: CustomCell.identifier, for: indexPath) as! CustomCell
customCell.myLabel.text = "Pepe"
customCell.myImage.image = UIImage(named: "pepe")
return categoryCell
【问题讨论】:
如何将图像添加到单元格中? 您的图片不在 contentView 中。它在 contentView 之下... 用更多代码更新了帖子 @FahimParkar 哦,解决了。谢谢! 【参考方案1】:按照 Fahim Parkar 的说法,以下解决了该问题。
contentView.addSubview(myImage)
contentView.addSubview(myLavel)
【讨论】:
以上是关于UICollectionViewCell 的 contentView 背景层覆盖内容的主要内容,如果未能解决你的问题,请参考以下文章
自定义UIcollectionViewCell,使用view控制颜色变化
Swift 检测 UICollectionViewCell 是不是被拖到另一个 UICollectionViewCell 之上