J'ai créé une pile de cercle UIViews
(cercles à l'intérieur d'un cercle) en utilisant CAShapeLayer
. Ombre 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
essayez de changer les décalages de circle.layer.shadowOffset = CGSize.init (largeur: 5, hauteur: 5) –
@VinayKumar essayé circle.layer .shadowOffset = CGSize.init (width: 5, height: 5) mais pas de chance :( – das
Fournir suffisamment de code pour permettre la reproduction de vos résultats – matt