2016-04-02 13 views
1

Ich möchte die backgroundColor Eigenschaft meiner UIView rot oder gelb sein. Die Ansicht zeigt jedoch eine schwarze Farbe an.Warum ist die Hintergrundfarbe meiner Zeichenansicht schwarz?

class RenderView:UIView { 

    var pointsToDraw:[Int] = [] { 
     didSet { 
      self.setNeedsDisplay() 
     } 
    } 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder)! 
     self.backgroundColor = UIColor.whiteColor() 
    } 


    override func drawRect(rect: CGRect) { 

     let context = UIGraphicsGetCurrentContext(); 
     CGContextClearRect(context, self.bounds); 
     CGContextSetLineWidth(context, 3); 
     UIColor.yellowColor().set() 


     if pointsToDraw.count > 4 { 

      CGContextMoveToPoint(context, CGFloat(pointsToDraw[0]), CGFloat(pointsToDraw[1])) 

      for i in 2..<pointsToDraw.count { 
       if i % 2 == 0 { 
        CGContextAddLineToPoint(context, CGFloat(pointsToDraw[i]), CGFloat(pointsToDraw[i + 1])) 
       } 
      } 
     } 

     // Draw 
     CGContextStrokePath(context); 
    } 
} 

Die Linie, die ich auf die Ansicht zeichnen kann, ist gelb, aber die Ansicht ist immer noch schwarz. Here's a sample project. Warum denkst du, dass das passiert?

+2

Gibt es einen Grund, dass Sie 'CGContextClearRect' aufrufen müssen? Es löscht die Hintergrundfarbe - und du zeichnest nie wieder deinen eigenen Hintergrund. Daher wird das Ergebnis schwarz sein. – Hamish

Antwort

1

Es ist, weil Sie CGContextClearRect anrufen. Der Effekt dieses Aufrufs kann ziemlich schwierig sein (wie ich es erkläre in my online book). Wenn der Hintergrund der Ansicht rot sein soll, sollten Sie zu Beginn Ihrer drawRect: die Grenzen des Kontexts mit rot füllen.

Verwandte Themen