2017-05-17 5 views
0

레이어와 그라디언트가있는 뷰에 그림자를 추가하려고합니다.레이어가있는 UIView에 그림자 추가

1) 패스

let path = UIBezierPath() 
path.move(to: CGPoint(x: myView.frame.minX, y: myView.frame.minY)) 
path.addLine(to: CGPoint(x: myView.frame.minX, y: myView.frame.maxY)) 
path.addLine(to: CGPoint(x: myView.frame.maxX, y: 171)) 
path.addLine(to: CGPoint(x: myView.frame.maxX, y: myView.frame.minY)) 
path.close() 

2) 형상

let shape = CAShapeLayer() 
shape.path = path.cgPath 

3) 경사 및

let gradient = CAGradientLayer() 
gradient.frame = myView.bounds 
gradient.colors = [UIColor.red.cgColor, UIColor.blue.cgColor] 
gradient.startPoint = CGPoint(x: 0, y: 0) 
gradient.endPoint = CGPoint(x: 1, y: 1) 

let shadow = CALayer() 
shadow.shadowPath = path.cgPath 
shadow.shadowColor = UIColor.black.cgColor 
shadow.shadowOffset = CGSize.zero 
shadow.shadowOpacity = 0.5 

4 그림자) 입력 : 난 실현할 수 있었는지에 따라 내 계층의 하위 계층으로 모든 레이어

self.myView.layer.addSublayer(shape) 
self.myView.layer.addSublayer(gradient) 
self.myView.layer.addSublayer(shadow) 
self.myView.layer.mask = shape 

여기 시뮬레이터가 내게 보여주는 것은 무엇입니까? 무엇?!?! 그림자는보기가 아니라 아래에 배치됩니다 !!! enter image description here

수정하려면 어떻게해야합니까? 내 마지막 목적은 그림자를보기 아래에 놓는 것입니다 (빨간색 선).

enter image description here

답변

0

당신은뿐만 아니라 그림자 반경을 할당해야합니다.

shadow.shadowRadius = 5 
+0

나는 그림자 반경을 지정하는 잊었지만 그림자는 아직 이미 maskToBound 전화를 시도했습니다 –

+0

수행하여도 고정되지 않지만 작동하지 않았다 –

+0

= false를 shadow.maskToBounds으로하려고 그렇게 –