UIImageView 上的阴影问题

Shadow on UIImageView issue

我正在尝试设置一个 cornerRadius 和一个 UIImageVIew 的影子,它位于 UICollectionViewCell 的内部。问题是我设置了 clipToBounds = true 并停止了阴影和 cornerRadius

我想要图像的 cornerRadius、clipToBounds 和阴影。不知道我在这里做错了什么。

class PostPhotoCell: UICollectionViewCell {

@IBOutlet weak var selectedImage: UIImageView!
@IBOutlet weak var deleteButton: UIButton!


    override func awakeFromNib()
    {
    super.awakeFromNib()

    selectedImage.layer.cornerRadius = 5.0
    selectedImage.contentMode = .scaleAspectFill
    //applying overall shadow to image
    selectedImage.layer.shadowColor = UIColor(white: 0.0, alpha: 0.5).cgColor
    selectedImage.layer.shadowOffset = CGSize(width: 0, height: 0)
    selectedImage.layer.shadowOpacity = 1.0
    selectedImage.layer.shadowRadius = 6.0
    selectedImage.clipsToBounds = true
    }
}

尝试: selectedImage.layer.masksToBounds = 真

检查 aspectMode 并检查剪辑子视图。

您需要有一个 UIView 作为影子容器并将您的 UIImageView 添加到其中。以下是使阴影和角半径与 UIImageView.

一起工作所需的示例
override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    let shadowView = UIView(frame: CGRect(x: 100, y: 100, width: 128, height: 128))
    shadowView.clipsToBounds = false
    shadowView.layer.shadowColor = UIColor(white: 0.0, alpha: 0.5).cgColor
    shadowView.layer.shadowOpacity = 1.0
    shadowView.layer.shadowOffset = CGSize.zero
    shadowView.layer.shadowRadius = 6.0
    shadowView.layer.shadowPath = UIBezierPath(roundedRect: shadowView.bounds, cornerRadius: 6.0).cgPath
    view.addSubview(shadowView)

    let imageView = UIImageView()
    imageView.image = UIImage(named: "YOUR_IMAGE_NAME")
    imageView.frame = shadowView.bounds
    imageView.clipsToBounds = true
    imageView.layer.cornerRadius = 5
    shadowView.addSubview(imageView)
}

如果你在 imageview 上同时给角半径和阴影,是行不通的。尝试在视图中使用 imageview,然后在 view 上给出圆角半径,在 imageview 上给出阴影