2016-12-15 3 views
0

Ich arbeite an einer Timeline-Ansicht. Ich zeichne eine Linie in der Mitte meines Symbols und zeichne einen Kreis mit Füllfarbe. Aber das Problem ist, dass wenn ich den Kreis zeichne, es immer auf der Oberseite des Symbols ist. Jetzt wird das Symbol nicht angezeigt. Ich habe versucht, die Schichten zu positionieren. Hier ist, was ich versuchtePositionierung von Ebenen von uiview in swift

override func draw(_ rect: CGRect) { 
      if let anchor = anchorView(){ 
       let centreRelativeToTableView = anchor.superview!.convert(anchor.center, to: self) 
       // print("Anchor x origin : \(anchor.frame.size.origin.x)") 
       timelinePoint.position = CGPoint(x: centreRelativeToTableView.x , y: centreRelativeToTableView.y/2) 
       timeline.start = CGPoint(x: centreRelativeToTableView.x , y: 0) 
       timeline.middle = CGPoint(x: timeline.start.x, y: anchor.frame.origin.y) 
       timeline.end = CGPoint(x: timeline.start.x, y: self.bounds.size.height) 
       timeline.draw(view: self.contentView) 




       let circlePath = UIBezierPath(arcCenter: CGPoint(x: anchor.center.x,y: anchor.center.y - 20), radius: CGFloat(20), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true) 

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

       //change the fill color 
       shapeLayer.fillColor = UIColor.randomFlat.cgColor 
       // shapeLayer.fillColor = UIColor.clear.cgColor 

       //you can change the stroke color 
       shapeLayer.strokeColor = UIColor.white.cgColor 
       //you can change the line width 
       shapeLayer.lineWidth = 5 
       shapeLayer.zPosition = 0 
       anchor.alpha = 1 
       //Set Anchor Z position 
        anchor.layer.zPosition = 2 
       shapeLayer.zPosition = 1 

       anchor.layer.addSublayer(shapeLayer) 


       // Setting icon to layer 
       /*let imageLayer = CALayer() 
       imageLayer.contents = newImage 
       anchor.layer.addSublayer(imageLayer)*/ 
       // timelinePoint.draw(view: self.contentView) 
      }else{ 
       print("this should not happen") 
      } 


} 

ss1 ------- s2

Ich will mein Symbol mit weißen Farbton auf dem Kreis zeichnen. Bitte helfen Sie mir

Antwort

0

Mit addSublayer wird die neue Ebene oben hinzufügen, die alles, was zuvor hinzugefügt wurde, abdecken wird.

Wenn Sie wissen, welche Schicht Ihr Symbol ist, können Sie stattdessen insertSublayer verwenden (bei :) es zu platzieren unter dem Symbol

Alternativ können Sie ein anderes UIView mit der genauen Rahmen des Symbols in Storyboard erstellen und Ort Es ist niedriger in der Hierarchie, also egal, was für ein Ziehung unter Ihnen endet.