2017-09-25 2 views
-1

J'ai créé une pile de cercle UIViews (cercles à l'intérieur d'un cercle) en utilisant CAShapeLayer. Here is what I have done currentlyOmbre n'est pas visible autour de l'UIView dans swift

Maintenant, je veux ajouter des ombres pour chaque cercle. Cela devrait être une ombre portée autour de chaque cercle. Donc j'ai fait comme ça.

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 
} 

Dans mon UIViewController j'appelle cette méthode de cette façon.

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

    } 

Mais mes ombres ne sont pas visibles autour de la UIViews. S'il vous plaît montrez-moi quelle est l'erreur avec mon code.

MISE À JOUR

méthode classe Circle tirage au sort appelle cela et créer des cercles

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 

} 

Voici comment appeler méthode ci-dessus

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)") 


    } 

Puis dans mon contrôleur de vue, je suis d'ajouter ces cercles utilisant une boucle for

+0

essayez de changer les décalages de circle.layer.shadowOffset = CGSize.init (largeur: 5, hauteur: 5) –

+0

@VinayKumar essayé circle.layer .shadowOffset = CGSize.init (width: 5, height: 5) mais pas de chance :( – das

+0

Fournir suffisamment de code pour permettre la reproduction de vos résultats – matt

Répondre

0

Vérifiez vos vues pour "clipToBounds". Peut-être que c'est vrai. passez à false dans chacune de vos vues.

view.clipToBounds = false 

ce paramètre toutes les coupes oust vue-limites