[英]Custom UIImageView Class that adds shadow and make image round in Swift 3
我正在嘗試創建一個完成兩件事的自定義UIImageView類,它使圖像視圖變圓並為其添加陰影。
這就是我所擁有的:
RoundImage.swift
class RoundImage: UIImageView {
override func awakeFromNib() {
}
func setImageAndShadow(image: UIImage) {
self.image = image
self.superview?.layoutIfNeeded()
print("Image size \(self.frame.size)")
self.clipsToBounds = true
layer.masksToBounds = true
layer.cornerRadius = self.frame.height / 2
layer.shadowOffset = CGSize(width: 0, height: 3.0)
layer.shadowColor = UIColor.black.cgColor
layer.shadowOpacity = 0.7
layer.shadowRadius = 4
}
}
ViewController.Swift
Class ViewController : UIViewController {
@IBOutlet weak var userImageView: RoundImage!
override func viewDidLoad() {
self.userImageView.setImageAndShadow(image: User.sharedInstance.profileImage!)
}
}
結果,在應用程序中獲得了圓形圖像,但是其中沒有陰影。
在此先感謝您的幫助。
您看不到陰影,因為它是用cornerRadius裁剪的。 為了使其可見,您應該創建一個帶有UIImageView的UIView,將cornerRadius應用於UIImageView,並將陰影應用於其容器(superview)
Swift 3您可以使用CAShapeLayer:
func setImageAndShadow(image: UIImage, myView : UIView) {
self.image = image
self.superview?.layoutIfNeeded()
print("Image size \(self.frame.size)")
self.clipsToBounds = true
layer.masksToBounds = true
layer.cornerRadius = self.frame.height / 2
let Shape = CAShapeLayer()
let myPath = UIBezierPath(ovalIn: self.frame)
Shape.shadowPath = myPath.cgPath
Shape.shadowColor = UIColor.black.cgColor
Shape.shadowOffset = CGSize(width: 0, height: 3)
Shape.shadowRadius = 7
Shape.shadowOpacity = 0.7
myView.layer.insertSublayer(Shape, at: 0)
}
並在VC中
let image = UIImage(named: "IMG_4040.jpg")
self.userImageView.setImageAndShadow(image: image!, myView : view)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.