Mein aktueller Plan ist es, die Rechtecke durch Unterklassen von NSView zu zeichnen, aber das scheint eine sehr ineffiziente Möglichkeit für das zu sein, was ich versuche, eine Reihe fester, nicht überlappender Rechtecke zu zeichnen, die die Farben einmal ändern während. Gibt es einen besseren Weg? Vielen Dank.Was ist der beste Weg, um eine Reihe von (~ 200) farbigen Rechtecken in Cocoa zu zeichnen?
Antwort
Sie können versuchen, mit CALayer
s, Art wie folgt: http://theocacao.com/document.page/555.
Wenn sie alle dieselbe Farbe oder dasselbe Bild haben, können Sie einen einzelnen CGLayer effizienter finden. Der Zweck dieser API besteht darin, dasselbe mehrmals zu zeichnen.
Auf der anderen Seite, wenn die Rechtecke unabhängig voneinander bewegen oder verschiedene Farben oder Bilder auf ihnen haben, Core Animation ist definitiv der Weg zu gehen.
Core Animation wäre eine großartige Technologie für ein Spiel, aber wenn Sie vorerst bei NSView bleiben möchten, können Sie eine Klasse ähnlich NSCell erstellen, die die Gameboard-Ansicht zum Implementieren von Positionierung und Zeichnen verwendet. Dies würde auf ähnliche Weise funktionieren wie viele Cocoa-Kontrollklassen, die eine einzelne Zelle (mit unterschiedlichen Werten) verwenden, um mehrere Elemente in einer Ansicht zu zeichnen.
Bedenken Sie, dass die Verwendung einzelner NSView-Objekte sehr schnell sein kann, aber unabhängig von Geschwindigkeitsunterschieden erlaubt Ihnen diese Strategie, die Logik sinnvoll zu trennen.
- 1. Was ist der beste Weg, um eine Reihe von Rechtecken in einem Bild zusammenzuführen?
- 2. Was ist der beste Weg, um eine Enumeration zu erhöhen?
- 3. Was ist der beste Weg, um eine IllegalArgumentException zu fangen
- 4. Was ist der beste Weg, um eine Eigenschaft zu deklarieren?
- 5. Was ist der beste Weg, um eine Tabelle zu deduplizieren?
- 6. Was ist der beste Weg, um eine Sitemap zu erstellen?
- 7. Was ist der beste Weg, um eine Animation zu fahren?
- 8. Was ist der beste Weg, um mehrere Suchoptionen zu behandeln?
- 9. Was ist der beste Weg, um eine Liste zu kopieren?
- 10. Was ist der beste Weg, um eine benutzerdefinierte Schaltfläche zu zeichnen?
- 11. Was ist der beste Weg, um Text auf einem HTML-Canvas-Element zu zeichnen?
- 12. Was ist der beste Weg, um in C++ zu casten?
- 13. Was ist der beste Weg, um Plots in Qt zu zeichnen?
- 14. Was ist der beste Weg, um diese Ellipse in einer iPhone App zu zeichnen?
- 15. Android: Der beste Weg, um ein ImageView zu zeichnen?
- 16. Was ist der beste Weg, um einen Fullscreen Quad in OpenGL 3.2 zu zeichnen?
- 17. Was ist der beste Weg, um eine Java Swing-Anwendung um eine Selbstaktualisierungsfunktion zu erweitern?
- 18. Was ist der beste Weg, Whitespace von einer Zeichenfolge in Cocoa Touch zu trimmen?
- 19. Was ist der beste Weg, eine String-Variable mit einer Reihe von String-Konstanten zu vergleichen?
- 20. Was ist der beste Weg, um eine Pylons-App bereitzustellen?
- 21. Was ist der beste Weg, um einen "Timer" zu implementieren?
- 22. Was ist der beste Weg zu
- 23. Was ist der beste Weg, um vorberechnete Daten zu implementieren?
- 24. Was ist der beste Weg, um REST-Webdienste zu nutzen?
- 25. Was ist der beste Weg, um ein Verzeichnis zu leeren?
- 26. Was ist der beste Weg, um mit OSGI zu beginnen?
- 27. Was ist der beste Weg, um einen InputStream zu überwachen?
- 28. Android, Was ist der beste Weg, um AbstractThreadedSyncAdapter zu töten?
- 29. Was ist der beste Weg, um mehrere Aktionen zu behandeln?
- 30. Was ist der beste Weg, um einen Datenrahmen zu umgehen?
Conways Spiel des Lebens, durch Zufall? – sigjuice
Ihre aktuelle Lösung ist wahrscheinlich der einfachste/schnellste Weg, um so etwas Einfaches zu tun. Es ist nichts Falsches daran, NSView zu untergliedern. –
Unterklasse NSView ist orthogonal zum Zeichnen der Rechtecke. Sie möchten, dass eine NSView-Unterklasse alle Rechtecke enthält - kann sie nicht sehr gut in die Luft zeichnen, oder? – Chuck