UIViewを角丸にしようとしてもdraw(_ rect: CGRect)をオーバーライドしたら四角になる
Xcode 10.1 Swift 4.2
UIViewの角丸は
しかし次のように
override func draw(_ rect: CGRect)
を書いてしまうとダメになる。
しかし、viewにシャドウを付ける場合はself.clipsToBounds = trueによってシャドウが消える。角丸にしてシャドウをつけるのはよくあるので困る。
UIViewの角丸は
class MyView: UIView {
init() {
super.init(frame: .zero)
self.backgroundColor = UIColor.white
self.layer.cornerRadius = 10.0
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}とすると出来る。しかし次のように
override func draw(_ rect: CGRect)
を書いてしまうとダメになる。
class MyView: UIView {
init() {
super.init(frame: .zero)
self.backgroundColor = UIColor.white
self.layer.cornerRadius = 10.0
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func draw(_ rect: CGRect) {
super.draw(rect)
}
}この場合、self.clipsToBounds = trueをinit()などに書いてやると丸く収まる。しかし、viewにシャドウを付ける場合はself.clipsToBounds = trueによってシャドウが消える。角丸にしてシャドウをつけるのはよくあるので困る。
コメント
コメントを投稿