这是一个棘手的问题。
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)
结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)