UILabel/NSTextView vs. CATextLayer
Habe ich eine iOS-app, die ich der Umstellung auf ein iOS/Mac app. In der iOS-version, die ich verwendet, UILabels für meinen text. Natürlich kann ich das nicht auf dem mac. Ich sehe zwei Optionen:
Option 1: Verwenden der UILabels auf iOS und NSTextView auf dem Mac.
Option 2: Verwenden CATextLayers auf beiden Plattformen, als Teil einer Allgemeinen Strategie, um so viel wie möglich Arbeit auf Sie beide.
Offensichtlich, option 2 hat einen großen Vorteil, dass es weniger code zu pflegen. Meine Frage ist -- funktioniert option 1 haben irgendwelche Vorteile die ich beachten sollte? Insbesondere ist CATextLayer Nachteile haben, dass Sie UILabel und NSTextView nicht haben?
EDIT: Es ist ein Spiel. Der Benutzer nie in text-aber das Spiel hat einige, erzielt zum Beispiel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt davon ab, wie Sie beabsichtigen, die Texte und die Art der Anwendung, die Sie schreiben. Wenn der text in Erster Linie statische und verwendet als Etiketten oder Dialoge in der UI, dann
NSTextField
sollte die Arbeit in Ordnung. Wenn Sie brauchen, fancy Animationen, dannCATextLayer
besser geeignet sein können. Wenn Sie schreiben einen Spiel (solitaire, zum Beispiel), die UIs werden, neigen dazu, mehr ähnlich und mitCATextLayer
und CoreAnimation Sinn machen würde. Wenn Sie schreiben eine allgemeinere Anwendung wie ein chat-client, der die Schnittstellen und Möglichkeiten, die der Benutzer interagiert mit der app sind sehr unterschiedlich, und es würde wahrscheinlich mehr Sinn machen, zu verwendenNSTextFields
oderNSTextViews
.Wieder, dies hängt alles von der Art der app, die Sie erstellen, aber wenn es eine eher traditionelle app-wie im chat-client Beispiel, dann würde ich denken, dass die Verwendung
CATextLayer
und zu erstellen, alles in die Schnittstelle programmgesteuert statt mithilfeNSTextField
und legen Sachen in einer nib-Datei, würde bedeuten, Hunderte von Zeilen von code. Auf der anderen Seite, wenn die app mehr wie das solitaire-Spiel Beispiel, und die Dimensionen der Schichten und Eigenschaften definiert sind, in einer Weise, die berücksichtigt, welche Plattform die app läuft, dann könnten Sie wahrscheinlich sparen eine Menge code.Für die Aufzeichnung,
NSTextField
ist wohl die nächste Entsprechung AppKit-KlasseUILabel
.NSTextView
ist eine komplexere Klasse, die Sie in der Regel nur brauchen, wenn Sie wollen, um die volle Absätze und erweiterte Satz. Teil dessen, was machtNSTextField
leichtere Gewicht ist, dass Sie neigen dazu, zu teilen mit einem unsichtbaren, einzigenNSTextView
(oder Ihrer übergeordneten KlasseNSText
) als das Feld editor hilft bei der Eingabe von text. Da nur ein Textfeld in einer app kann den Fokus haben, zu einer Zeit, es kann ein gemeinsames Feld-editor um die Leistung zu verbessern.Gibt es noch einen weiteren Nachteil, dass Sie brauchen, um bewusst sein (oder zukünftige Besucher zu siehe diesen thread). Bei der Verwendung von UILabel, alle die Barrierefreiheit kommt frei durch UIAccessibility. Für CATextLayer, müssen Sie kümmern sich um alles selbst: - touch-innen, die accessibilityLabel, die position in der Liste der accessibilityElements...