UICollectionViewCell 阴影与装饰视图不一致
Posted
技术标签:
【中文标题】UICollectionViewCell 阴影与装饰视图不一致【英文标题】:UICollectionViewCell inconsistent shadow with decoration view 【发布时间】:2018-12-10 22:30:14 【问题描述】:我正在使用IGListKit 和我的UICollectionView
。现在 CollectionView 非常简单,因为它每个部分只有一个单元格。该单元格包含一个内部水平UICollectionView
作为图像幻灯片。
由于我需要在整个部分周围添加阴影,因此我使用 Decoration Views,并将其应用为边框阴影:layer.shadowPath
我注意到一些奇怪的事情,阴影的不透明度会随着幻灯片中当前显示的图片而变化。如果图片(或图片的一部分)很亮,您可以看到阴影不透明度发生变化。
我不知道这是否可以解决。
您可以清楚地看到,如果我在幻灯片中滑动图片时截屏,顶部的阴影在一侧较暗。
装饰视图代码:
class FeedItemBackgroundShadowView: UICollectionReusableView
// MARK: Initialization
... Constructors calling setup
// MARK: Setup
override func layoutSubviews()
super.layoutSubviews()
self.layer.shadowPath = UIBezierPath(roundedRect: self.bounds, cornerRadius: Constants.cornerRadius).cgPath
func setup()
self.layer.cornerRadius = 12.0
self.layer.backgroundColor = UIColor.white.cgColor
self.layer.shadowColor = UIColor.black.cgColor
self.layer.shadowOffset = CGSize(width: 0.0, height: 2.5)
self.layer.shadowRadius = 12.0
self.layer.shadowOpacity = 0.35
代码的其余部分是一个简单的 UICollectionViewCells,它嵌入了一个 UICollectionView
【问题讨论】:
可能与override func layoutSubviews
方法有关。当您水平滚动时,您可以检查何时触发该方法吗?在触发该方法并将实际的 bezierpath 添加为层之前,阴影行为可能会很奇怪。
装饰单元格中的layoutSubviews
(FeedItemBackgroundShadowView
) 仅在我垂直滚动时调用。当我在单元格中水平滑动时不会调用它。
【参考方案1】:
你确定这不是错觉吗?
【讨论】:
以上是关于UICollectionViewCell 阴影与装饰视图不一致的主要内容,如果未能解决你的问题,请参考以下文章
如何使用清晰的背景颜色向 UICollectionViewCell 添加阴影?
UICollectionViewCell 阴影与装饰视图不一致