圆形视图上的不均匀阴影

Posted

技术标签:

【中文标题】圆形视图上的不均匀阴影【英文标题】:Uneven Dropshadows on rounded views 【发布时间】:2018-12-30 03:37:46 【问题描述】:

我有一个collectionview单元格,我有一个容器UIView(),它与超级视图有一定距离。 containerview 是圆形的,我正在尝试对其应用阴影。我非常精细地实现了这一点,直到在某些单元格上它破坏了阴影层并产生了不均匀的阴影效果。以下是当前结果:

以下是我的代码:

extension UIView() 
    func dropShadow(color: UIColor, opacity: Float = 0.5, offSet: CGSize, radius: CGFloat = 1, scale: Bool = true) 
    self.layer.masksToBounds = false
    self.layer.shadowColor = color.cgColor
    self.layer.shadowOpacity = opacity
    self.layer.shadowOffset = offSet
    self.layer.shadowRadius = radius

    self.layer.shadowPath = UIBezierPath(roundedRect: self.bounds, cornerRadius: radius).cgPath
    self.layer.shouldRasterize = true
    self.layer.rasterizationScale = scale ? UIScreen.main.scale : 1
    

下面是 UICollectionViewCell.swift

override func layoutSubviews() 
    super.layoutSubviews()
    containerView.dropShadow(color: .lightGray, opacity: 6, offSet: CGSize(width: 0, height: 0), radius: 6, scale: true)

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

我在 collectionview 单元格内的视图中使用了阴影。请看下面的链接

View Sample

这是在cellforItem里面

myCell.imgIcon.backgroundColor = UIColor.white
myCell.imgIcon.layer.shadowColor = UIColor.lightGray.cgColor
myCell.imgIcon.layer.shadowOpacity = 0.5
myCell.imgIcon.layer.shadowOffset = CGSize(width: 0, height: 0)
myCell.imgIcon.layer.shadowRadius = 5

【讨论】:

您好,感谢您的回复。我已经尝试添加这个。但这似乎不起作用。我也尝试了很多其他方法。除了这个,你还有什么建议? 你能分享你的代码或你的collectionview的截图吗 我已经分享了上面的代码。并且还给出了集合视图中的单元格。您想查看整个集合视图吗? 我也确实将您的代码粘贴到cellForItem 在您的collectionview单元格中添加一个UIView,边距为100,然后向视图添加阴影

以上是关于圆形视图上的不均匀阴影的主要内容,如果未能解决你的问题,请参考以下文章

如何在圆形 imageView android 上添加一个阴影和边界

带有圆形图像视图的自定义圆形 UIButton

如何在 Swift 中制作圆形 UIView

HTML Canvas:圆形(行星)的内部阴影

圆形视图上的手势识别器

带阴影的圆形 QLabel