【发布时间】: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) 仅在我垂直滚动时调用。当我在单元格中水平滑动时不会调用它。
标签: ios swift uicollectionview shadow uicollectionviewlayout