2016-08-03 26 views
0

Ich habe eine UIView Unterklasse TestView mit zwingender von DrawRect so genannt:drawRect nicht zieht die richtige Form

import Foundation 
import UIKit 

class TestView: UIView { 
    override func drawRect(rect: CGRect) { 
     let rectangle5Color = UIColor(red: 1.000, green: 1.000, blue: 1.000, alpha: 1.000) 
     let rectangle5StrokeColor = UIColor(red: 1.000, green: 1.000, blue: 1.000, alpha: 1.000) 

     let rectangle5Path = UIBezierPath(ovalInRect: rect) 
     rectangle5Path.moveToPoint(CGPoint(x: 758, y: 1467)) 
     rectangle5Path.addLineToPoint(CGPoint(x: 748, y: 1467)) 
     rectangle5Path.addLineToPoint(CGPoint(x: 204, y: 1467)) 
     rectangle5Path.addLineToPoint(CGPoint(x: 204, y: 1205)) 
     rectangle5Path.addCurveToPoint(CGPoint(x: 266, y: 1205), controlPoint1: CGPoint(x: 204, y: 1205), controlPoint2: CGPoint(x: 248.33, y: 1205)) 
     rectangle5Path.addCurveToPoint(CGPoint(x: 754, y: 1135), controlPoint1: CGPoint(x: 411.79, y: 1205), controlPoint2: CGPoint(x: 627.68, y: 1135)) 
     rectangle5Path.addLineToPoint(CGPoint(x: 758, y: 1135)) 
     rectangle5Path.addCurveToPoint(CGPoint(x: 1232, y: 1205), controlPoint1: CGPoint(x: 884.32, y: 1135), controlPoint2: CGPoint(x: 1086.21, y: 1205)) 
     rectangle5Path.addCurveToPoint(CGPoint(x: 1296, y: 1205), controlPoint1: CGPoint(x: 1233.67, y: 1205), controlPoint2: CGPoint(x: 1296, y: 1205)) 
     rectangle5Path.addLineToPoint(CGPoint(x: 1296, y: 1467)) 
     rectangle5Path.addLineToPoint(CGPoint(x: 758, y: 1467)) 
     rectangle5Path.closePath() 
     rectangle5Path.moveToPoint(CGPoint(x: 752.5, y: 1009)) 
     rectangle5Path.addCurveToPoint(CGPoint(x: 867, y: 1122.5), controlPoint1: CGPoint(x: 815.74, y: 1009), controlPoint2: CGPoint(x: 867, y: 1059.82)) 
     rectangle5Path.addCurveToPoint(CGPoint(x: 752.5, y: 1236), controlPoint1: CGPoint(x: 867, y: 1185.18), controlPoint2: CGPoint(x: 815.74, y: 1236)) 
     rectangle5Path.addCurveToPoint(CGPoint(x: 638, y: 1122.5), controlPoint1: CGPoint(x: 689.26, y: 1236), controlPoint2: CGPoint(x: 638, y: 1185.18)) 
     rectangle5Path.addCurveToPoint(CGPoint(x: 752.5, y: 1009), controlPoint1: CGPoint(x: 638, y: 1059.82), controlPoint2: CGPoint(x: 689.26, y: 1009)) 
     rectangle5Path.closePath() 
     rectangle5Color.setFill() 
     rectangle5Path.fill() 
     rectangle5StrokeColor.setStroke() 
     rectangle5Path.lineWidth = 5 
     rectangle5Path.stroke() 
    } 
} 

Auf meinem ViewController Ich füge diese Ansicht als eine Unterklasse der Ansicht wie die :

let testView = TestView(frame: CGRectMake(0,0, 100, 100)) 
self.view.addSubview(testView) 

aber die einzige Sache, die es zeichnet es einen weißen Kreis anstelle der Form, die es zeichnen sollte.

Was mache ich hier falsch?

Antwort

0

Sie tun UIBezierPath(ovalInRect: rect), mit einer rect von 100 x 100. So würde ich einen Kreis erwarten. Wenn Sie den Kreis nicht zeichnen möchten, initialisieren Sie den Pfad stattdessen mit UIBezierPath().

In Bezug auf, warum Sie nichts anderes gesehen haben, sind Ihre Wege weit außerhalb der 100 x 100 Größe, so dass ich nicht sicher bin, was Sie erwartet, dass es zu rendern. Sie sollten diese Koordinaten so anpassen, dass sie innerhalb der Größe von TestView liegen, wenn Sie diesen Pfad innerhalb der Ansicht rendern möchten.

+0

Ich habe bereits versucht 'UIBezierPath()', aber es zeigt nichts dann –

+0

Ja, nun alle Ihre Koordinaten sind viel größer als 100 (die maximale Breite und Höhe Ihrer Ansicht), also wieder, ich ' Ich bin mir nicht sicher, was Sie erwartet haben. Skalieren Sie diese Werte so, dass sie in die Größe von "TestView" fallen. – Rob