UICollectionView 中的 UIView 渐变颜色未正确呈现

Posted

技术标签:

【中文标题】UICollectionView 中的 UIView 渐变颜色未正确呈现【英文标题】:UIView gradient color not rendered properly in UICollectionView 【发布时间】:2019-02-26 08:35:03 【问题描述】:

我有一个自定义UICollectionViewCell,我面临的问题是在加载单元格后立即渲染 UI。您可以从下面的屏幕截图中看到,第一个单元格正确加载了dimView(它具有渐变背景颜色),但任何其他单元格都没有。

值得一提的是,一旦用户向左或向右滑动单元格,该视图就可见(它会产生一种翻转错觉,即隐藏图像并显示该视图)。

如果单元格被重用,它会正确呈现,但不是在最初加载时。是否有另一种方法可以调用此函数showDimViewAndCheckmark()??

@IBOutlet weak var backView: UIView!

override func awakeFromNib() 
    super.awakeFromNib()
    setUI()


override func layoutSubviews() 
    super.layoutSubviews()
    setUI()


override func prepareForReuse() 
    super.prepareForReuse()
    setUI()


 func setUI() 
    coverImageView.clipsToBounds = true
    backView.setGradientBackground(colorOne: Colors.purpleDarker, colorTwo: Colors.purpleLight)
    backView.layer.maskedCorners =  [.layerMaxXMinYCorner, .layerMaxXMaxYCorner]

    layer.shadowColor = UIColor.lightGray.cgColor
    layer.shadowOffset = CGSize(width:1, height: 1)
    layer.shadowRadius = 2.0
    layer.shadowOpacity = 1.0
    layer.masksToBounds = false

    contentView.clipsToBounds = true
    contentView.layer.cornerRadius = 10
    contentView.layer.maskedCorners = [.layerMaxXMinYCorner, .layerMaxXMaxYCorner]

【问题讨论】:

在 layoutSubviews() 中调用你的函数 我试过了,真的没有效果 【参考方案1】:
draw(_ rect: CGRect)

试试这个方法。

【讨论】:

以上是关于UICollectionView 中的 UIView 渐变颜色未正确呈现的主要内容,如果未能解决你的问题,请参考以下文章

UITableviewCell 中的 UICollectionView。添加约束后,UICollectionView 不显示

UICollectionView 中的 UILabel 重载

UICollectionView 中的垂直和水平滚动方向

UITableViewCell 中的 UICollectionView

如何更改 UICollectionView 中的滚动方向?

UICollectionView 中的重载数据