Wie würde ich ein benutzerdefiniertes UIView zeichnen, das buchstäblich nur eine Kugel (ein 2D-Kreis) ist? Würde ich einfach die drawRect-Methode überschreiben? Und kann mir jemand den Code zum Zeichnen eines blauen Kreises zeigen?
Wäre es auch in Ordnung, den Rahmen dieser Ansicht innerhalb der Klasse selbst zu ändern? Oder muss ich den Rahmen einer anderen Klasse ändern?
(Ich versuche nur, einen Ball aufzustellen, der herumspringt.)
Ja:
Im Idealfall nicht, aber Sie könnten.
Ich würde die Eltern das kontrollieren lassen.
quelle
CGContextSetFillColorWithColor(ctx, self.colorOfCircle.CGColor);
, funktioniert die in der Lösung vorgeschlagene MethodeCGColorGetComponents
nur mit einigen Farben, siehe stackoverflow.com/questions/9238743/…rect
versehentlichself.frame
für die Ellipse zu verwenden. Der richtige Wert istself.bounds
. D'oh! :)Hier ist eine andere Möglichkeit, UIBezierPath zu verwenden (möglicherweise ist es zu spät ^^). Erstellen Sie einen Kreis und maskieren Sie UIView damit wie folgt:
quelle
layerClass
Klassenmethode überschreiben , um sie zu einer Formebene zu machen.Mein Beitrag mit einer Swift-Erweiterung:
Ruf einfach an
myView.asCircle()
quelle
masksToBounds
auf true und usingself
ist in dieser Antwort optional, aber es ist immer noch die kürzeste und beste LösungSwift 3 - benutzerdefinierte Klasse, einfach wiederzuverwenden. Es verwendet
backgroundColor
set in UI Builderquelle
Swift 3 Klasse:
quelle
Eine andere Möglichkeit, sich dem Zeichnen von Kreisen (und anderen Formen) zu nähern, ist die Verwendung von Masken. Sie zeichnen Kreise oder andere Formen, indem Sie erstens Masken mit den gewünschten Formen erstellen, zweitens Quadrate Ihrer Farbe bereitstellen und drittens Masken auf diese Farbquadrate anwenden. Sie können entweder Maske oder Farbe ändern, um einen neuen benutzerdefinierten Kreis oder eine andere Form zu erhalten.
Hier ist die Ausgabe des obigen Codes:
quelle
Es gibt eine andere Alternative für faule Leute. Sie können den
layer.cornerRadius
Schlüsselpfad für Ihre Ansicht im Interface Builder festlegen . Wenn Ihre Ansicht beispielsweise eine Breite = Höhe von 48 hat , legen Sie Folgendes festlayer.cornerRadius = 24
:Dies funktioniert jedoch nur, wenn Sie eine statische Größe der Ansicht haben
(width/height is fixed)
und der Kreis im Interface Builder nicht angezeigt wird.quelle
Swift 3 - Xcode 8.1
quelle