UIView / UILabel / UIButton に角丸+影をつける最も簡単な方法

corderRadius + shadow で調べてみるといろいろ方法が散乱していたので、最も簡単だと思う方法をご紹介します。

class CustomView: UIView {
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        self.backgroundColor = .clear
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        self.backgroundColor = .clear
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        self.layer.cornerRadius = 10
//        self.clipsToBounds = true これは設定してはダメ
//        self.layer.masksToBounds = true これは設定してはダメ
        
        self.layer.shadowColor = UIColor.black.cgColor
        self.layer.shadowRadius = 1
        self.layer.shadowOffset = CGSize(width: 1, height: 1)
        self.layer.shadowOpacity = 0.5
        self.layer.backgroundColor = UIColor.yellow.cgColor
    }
}

ポイントは、clipsToBoundslayer.masksToBounds を true にしないことと、自身のビューの背景色(self.backgroundColor)を clear にし、実際の背景色はlayer層でつける(self.layer.backgroundColor)ことです。