Swift 4 で UIView の内側に影を落とす(レイヤーを使ったシャドウ)

UIView の extension として内側(実際には内側に見えると言うだけ)にシャドウを表示します。

以下のサイトが解説含めてわかりやすので基本的なところはそちらを参照していただくとして、コードは Swift 4 で動作する様に書き直しただけです。

CALayer を使ってビューの内側に影を落とす (Cocoaの日々)

extension UIView {
    func innerShadow() {
        let path = UIBezierPath(rect: CGRect(x: -5.0, y: -5.0, width: self.bounds.size.width + 5.0, height: 5.0 ))
        let innerLayer = CALayer()
        innerLayer.frame = self.bounds
        innerLayer.masksToBounds = true
        innerLayer.shadowColor = UIColor.black.cgColor
        innerLayer.shadowOffset = CGSize(width: 2.5, height: 2.5)
        innerLayer.shadowOpacity = 0.5
        innerLayer.shadowPath = path.cgPath
        self.layer.addSublayer(innerLayer)
    }
}

転記するだけでなんの芸もないですが、、、UIView の上部に影を表示します。

呼び出し側

class MyViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.innerShadow()
    }
}

◆使用前例

◆使用後例

フォローする