How can I add shadow to a circle UIImageView or UIView?

前端 未结 6 2008
迷失自我
迷失自我 2020-12-25 13:31

I am trying to make a circle UIImageView, and it works. Below is the way I use to make it:

[self.pic.layer setMasksToBounds:YES];
[self.pic.laye         


        
6条回答
  •  囚心锁ツ
    2020-12-25 13:49

    In case anyone looks for Swift 3 or 4 working solution:

        let imageSize: CGFloat = 64.0
    
        // Create a container which has a shadow
        let imageCotainer = UIView(frame: CGRect(x: 0, y: 0, width: imageSize, height: imageSize))
        imageCotainer.clipsToBounds = false
        imageCotainer.layer.shadowColor = UIColor.black.cgColor
        imageCotainer.layer.shadowOpacity = 0.2
        imageCotainer.layer.shadowOffset = CGSize(width: 0, height: 1)
        imageCotainer.layer.shadowRadius = 2
    
        // Create an image view that will be inserted into the container view
        let imageView = UIImageView(frame: imageCotainer.bounds)
        imageView.image = yourImage
        imageView.clipsToBounds = true
        let cornerRadius = imageView.frame.height / 2
        imageView.layer.cornerRadius = cornerRadius
    
        // Draw a shadow
        imageCotainer.layer.shadowPath = UIBezierPath(roundedRect: imageCotainer.bounds, cornerRadius: cornerRadius).cgPath
        // Add image into container
        imageCotainer.addSubview(imageView)
    

    Sometimes you also need to set constraints for image inside of the container, but it may work without it too in some cases. But if it's not, add this:

        // Set constraints for the image inside the container view
        imageView.translatesAutoresizingMaskIntoConstraints = false
        imageView.topAnchor.constraint(equalTo: imageCotainer.topAnchor).isActive = true
        imageView.leftAnchor.constraint(equalTo: imageCotainer.leftAnchor).isActive = true
        imageView.rightAnchor.constraint(equalTo: imageCotainer.rightAnchor).isActive = true
        imageView.bottomAnchor.constraint(equalTo: imageCotainer.bottomAnchor).isActive = true
        imageView.heightAnchor.constraint(equalToConstant: imageSize).isActive = true
        imageView.widthAnchor.constraint(equalToConstant: imageSize).isActive = true
    

提交回复
热议问题