带有阴影,圆角和自定义drawRect的UIView

带有阴影,圆角和自定义drawRect的UIView,第1张

带有阴影,圆角和自定义drawRect的UIView

这是一个棘手的问题。

UIView
clipsToBounds
需要,以获得圆角。但是
CALayer
masksToBounds
必须是
false
这样的阴影是可见的。不知何故,如果
drawRect
被覆盖,一切都会起作用,但实际上不应该被覆盖。

解决方案是创建一个超级视图以提供阴影(在下面的演示中是

shadowView
)。您可以在Playground中测试以下内容:

class MyView : UIView {    override func drawRect(rect: CGRect) {        let c = UIGraphicsGetCurrentContext()        CGContextAddRect(c, CGRectMake(10, 10, 80, 80))        CGContextSetStrokeColorWithColor(c , UIColor.redColor().CGColor)        CGContextStrokePath(c)    }}let superview = UIView(frame: CGRectMake(0, 0, 200, 200))let shadowView = UIView(frame: CGRectMake(50, 50, 100, 100))shadowView.layer.shadowColor = UIColor.blackColor().CGColorshadowView.layer.shadowOffset = CGSizeZeroshadowView.layer.shadowOpacity = 0.5shadowView.layer.shadowRadius = 5let view = MyView(frame: shadowView.bounds)view.backgroundColor = UIColor.whiteColor()view.layer.cornerRadius = 10.0view.layer.borderColor = UIColor.grayColor().CGColorview.layer.borderWidth = 0.5view.clipsToBounds = trueshadowView.addSubview(view)superview.addSubview(shadowView)

结果:



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5642198.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存