简体   繁体   中英

Shadow is not visible around the UIView in swift

I have created a stack of circle UIViews (Circles inside a circle)using CAShapeLayer . 这是我目前所做的

Now I want to add shadows for every circle. It should be a drop shadow around the each circles. So I did like this.

func setCircleShadow(circle:Circle)
{
    circle.layer.shadowColor=UIColor.init(colorLiteralRed: 0.0/255, green: 0.0/255, blue: 0.0/255, alpha: 0.14).cgColor
    circle.layer.shadowOffset = CGSize.init(width: circle.frame.size.width, height: circle.frame.size.height)
    circle.layer.shadowOpacity = 1.0
    circle.layer.shadowRadius = 6.0
    circle.layer.masksToBounds = false
}

In my UIViewController I am calling this method in this way.

for addedcircle in circleStack
    {
        self.view.addSubview(addedcircle)
        let deco=CircleDeco()
        deco.setCircleShadow(circle: addedcircle)

    }

But my shadows are not visible around the UIViews . Please show me whats the error with my code.

UPDATE

Circle class draw method calls this and create circles

func drawCircle()
{


    let circlePath = UIBezierPath(arcCenter: CGPoint.init(x: RDcircleEnum.circleCenterX.getValues(), y: RDcircleEnum.circleCenterY.getValues()), radius: CGFloat(self.innerCircleRadius), startAngle: CGFloat(0), endAngle:CGFloat(Double.pi * 2), clockwise: true)


    let shapeLayer = CAShapeLayer()
    shapeLayer.path = circlePath.cgPath

    //change the fill color
    shapeLayer.fillColor = UIColor.blue.cgColor
    //you can change the stroke color
    shapeLayer.strokeColor = UIColor.red.cgColor
    //you can change the line width
    shapeLayer.lineWidth = 3.0
    shapeLayer.path = circlePath.cgPath

    self.layer.mask = shapeLayer

}

This is how to call above method

open func setupCirclestack(parentFrame:CGRect)->[Circle]
{
    var arrayCircles = Array<Any>()
    let arrayColor=[UIColor.green,UIColor.blue,UIColor.red,UIColor.purple,UIColor.orange]
    var currentCircleRadius = CGFloat((UIScreen.main.bounds.size.width-60)/2)

    for i in 0..<CircleValues.sharedInstance.numberOfCircles-1
    {

      let circle=self.getInnerCircle(currentFrame: parentFrame) as! Circle
        circle.backgroundColor=UIColor.white//arrayColor[i]
        circle.clipsToBounds=false

        arrayCircles.append(circle)
        circle.innerCircleRadius = currentCircleRadius
        currentCircleRadius = currentCircleRadius - 20
        print("New Radius------\(circle.innerCircleRadius)")


    }

Then in my view controller I am adding these circles using a for loop

Check your views for "clipToBounds". Maybe it's true. switch it to false in each your views.

view.clipToBounds = false

this parameter cuts all oust of view-bounds

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM