Frage

Hat jemand irgendwelche Beispiele oder Ressourcen, wo ich Informationen über Lauftext finden könnte, die zu lang ist in einer Schaltfläche angezeigt werden? Ich denke, etwas in diese Richtung.

  • Display so viel Text wird innerhalb des aktuellen rect passen mit ‚...‘ am Ende Überlauf zu bedeuten.
  • Pause für etwa 1 Sekunde dann langsam den Text an den rechten Rand bewegen Sie den rechten Teil des Strings angezeigt werden.
  • Display so viel Text wird innerhalb des aktuellen rect passen mit ‚...‘ am Anfang Überlauf zu bedeuten.
  • Starten Sie die ganze Sache in umgekehrter Richtung.

Gibt es eine einfache Möglichkeit, dies mit dem „Kern“ oder gebaut in „Animation“ Frameworks auf einem bestimmtes mobiles Gerät zu tun?

[Bearbeiten] Iwanted einige weitere Details hinzufügen, wie ich Leute denken, konzentrieren sich mehr auf, ob oder nicht das, was ich versuche, ist angemessen, zu erreichen. Die Taste ist für die Antworten auf ein Quiz-Spiel. Es führt keine speciffic UI-Funktion, sondern ist die Antwort für die Anzeige. Apple selbst tut dies in ihrem iQuiz Quiz-Spiel auf dem iPod Nano und ich denke, es ist eine recht elegante Lösung für Antworten, die länger als die Breite meiner Taste sind.

Falls es die ‚...‘, dass der schwierige Teil dieser ist. Lets sagen, dass ich diese Anforderung entfernt. Kann ich das Label sein für die Schaltfläche in voller Größe, aber an den Client rect der Schaltfläche abgeschnitten und einige Animationsmethoden verwenden Sie es in dem Clipping-rect zu bewegen? Das würde mir fast die gleiche Wirkung minus die Ellipsen.

War es hilfreich?

Lösung

Hier ist eine Idee: statt Ellipsen (...), einen Gradienten auf jeder Seite verwenden, so dass der zusätzliche Text weg in die Hintergrundfarbe verblasst. Dann könnten Sie dies tun, mit drei CALayers. Einem für den Text und zwei für Fade-Effekt

Die Fade-Masken würden nur mit einem Gradienten Rechtecke, die aus transparent für die Hintergrundfarbe geht. Sie sollten über die Textebene positioniert werden. Der Text würde auf der Textebene gezogen werden, und dann animieren Sie es einfach hin und her in der Art und Weise Gleiten Sie beschreiben. Sie können ein Objekt CGPath schaffen den Weg beschreiben, und fügen Sie es zu einem CAKeyframeAnimation Objekt, das Sie auf der Textebene hinzufügen.

Als ob Sie denken, dies ist „easy“ hängt davon ab, wie gut kennen Sie Core Animation, aber ich denke, wenn Sie die API lernen werden Sie feststellen, dies ist nicht so schlecht und wäre der Mühe wert sein.

Andere Tipps

Ohne stumpf sein zu wollen, vielleicht sollten Sie Ihr Problem überdenken. Eine Schaltfläche sollte eine klare und berechenbare Funktion haben. Es ist nicht ein Ort zum Speichern und Anzeigen von Text. Vielleicht könnten Sie eine Beschreibung Show auf dem Bildschirm mit einer schönen Standard-Button haben?

Update mit Quellcode Beispiel:

Hier sind einige bereit Quellcode Beispiel (eigentlich eine vollständige Reißverschluss Xcode-Projekt mit Bild verwenden und nib Dateien und einige Quellcode), nicht für das iPhone, nicht Core Animation verwenden, nur ein paar einfachen NSImages und einen NSImageView verwenden. Es ist nur eine billige Hack, ist es nicht die volle Funktionalität implementieren Sie angefordert (sorry, aber ich fühle mich nicht wie Sie Ihren Quellcode zu schreiben für Sie :-P), schrecklich Code-Layout (hey, ich dies nur gehackt zusammen in einem paar Minuten, man kann also nicht erwarten, besser ;-)) und es ist nur ein Beispiel, wie dies erreicht werden kann. Es kann mit Core Animation, auch getan werden, aber dieser Ansatz ist einfacher. Komponieren auf die Schaltfläche Animation in eine NSImageView ist nicht so schön wie ein NSView Subklassen und direkt zu ihrem Kontext malen, aber es ist viel einfacher (Ich wollte nur die einfachste Lösung möglich hacken zusammen). Es wird auch nicht zurückblättern, wenn es den ganzen Weg nach rechts gescrollt. Dafür brauchen Sie nur eine andere Methode zurück zu blättern und einen anderen NSTimer zu starten, der 2 Sekunden feuert, nachdem Sie die Punkte nach links gezogen hat.

Sie einfach das Projekt in Xcode öffnen und treffen laufen, das ist alles, was es zu tun ist. Dann werfen Sie einen Blick auf den Quellcode. Es ist wirklich nicht so kompliziert (jedoch können Sie es zuerst zu formatieren haben, das Layout saugt).


Update wegen Kommentar auf meine Antwort:

Wenn Sie nicht verwenden Apple-UI-Elemente, ich nicht, das Problem zu sehen. In diesem Fall ist der Knopf nicht einmal ein Knopf, es ist nur eine anklickbare Ansicht (NSView wenn Sie Cocoa verwenden). Sie können nur Unterklasse NSView als MyAnswerView und die Farbe Methode überschreiben in die Ansicht zu malen, was Sie wollen. Mehrzeiligen Text, Lauftext, 3D-Text animiert, es ist vollständig bis zu Ihrer Phantasie.

Hier ein Beispiel , das zeigt, wie jemand subclassed NSView ein vollständiges benutzerdefiniertes Steuerelement zu erstellen, die nicht standardmäßig vorhanden ist. Die Steuerung sieht wie folgt aus:

Alt-Text

Sehen Sie die Komische in der oberen linken Ecke? Das ist eine Kontrolle. Hier ist, wie es funktioniert:

alt text


Ich hasse das zu sagen, wie es keine Antwort auf Ihre Frage, aber „ Tu das nicht! “. Apple hat Richtlinien, wie eine Benutzeroberfläche zu implementieren. Während Sie sie kostenlos ignorieren sind, sind Apple-Nutzer verwendet UIs folgenden Richtlinien zu haben und folgende nicht, sie schaffen Anwendungen, die Apple-Nutzer ansprechend hässlich und wenig finden.

sind hier Apple Human Interface Guidelines

Lassen Sie mich Zitat von dort

  

Push Button Inhalt und Kennzeichnung

     

Ein Druckknopf enthält immer Text, es   kein Bild enthält. Wenn Sie brauchen   ein Symbol oder ein anderes Bild auf einem anzuzeigen   Taste, verwenden Sie stattdessen eine Schräge Taste,   in „Bevel Buttons.“

     

Das Etikett auf einem Druckknopf soll eine   Verb oder Verbalphrase, die den beschreibt   Aktion führt er-Speichern, Schließen, Drucken,   Löschen, Passwort ändern, und so weiter. Wenn   ein Druckknopf wirkt auf einem einzigen   Einstellung, beschriften Sie die Taste   spezifisch wie möglich; "Wählen   Bild ...“, zum Beispiel, ist mehr   „Wählen Sie ...“ hilfreicher als Da Tasten   eine sofortige Maßnahmen einleiten, es   sollte nicht notwendig sein „jetzt“ zu verwenden,   (Jetzt scannen, zum Beispiel) in dem Etikett.

     

Push-Button-Etiketten sollten   Titel-Stil Kapitalisierung, wie   in „Capitalization beschrieben von   Interface-Element-Etiketten und Text.“Wenn   der Druckknopf sofort öffnet   ein weiteres Fenster, Dialogfeld oder AppliKation   seine Aktion auszuführen, können Sie eine verwenden   Auslassungszeichen in der Bezeichnung. Zum Beispiel,   Mail-Einstellungen zeigt einen Push   Taste, die eine Ellipse umfasst   weil es öffnet .Mac-System   Vorlieben, wie in Abbildung 15-8 gezeigt.

Buttons sollte ein einziges Verb oder ein Verb Phrase enthalten, keine Antworten auf die Quiz-Spiel! Wenn Sie zwischen 2 und 5 Antworten haben, sollten Sie Radio-Buttons verwenden die Benutzer haben die Antwort auswählen und eine OK-Taste der Benutzer haben, um die Antwort zu akzeptieren. Seit mehr als 5 Antworten, sollten Sie eine Pop-up-Auswahl statt nach den Richtlinien betrachten, obwohl ich denke, dass in diesem Fall eher hässlich wäre.

Sie könnten prüfen, mit nur einer Spalte unter Verwendung einer Tabelle, eine Zeile pro Antwort und jede Zelle ist mehrzeilige, wenn die Antwort ist sehr lang und muss brechen. So wählt der Benutzer eine Tabellenzeile, indem Sie darauf klicken, die die Tabellenzelle hervorhebt und dann klickt auf eine Schaltfläche OK zu beenden. Alternativ können Sie auch direkt fortsetzen, sobald der Benutzer eine beliebige Tabellenzelle wählt (aber auf diese Weise nehmen Sie dem Benutzer eine Chance einen versehentlichen Klick zu korrigieren). Auf der anderen Seite, Tabellen mit mehrzeiligen Zellen sind eher selten auf MacOS X. Das iPhone nutzt einige, aber in der Regel mit sehr wenig Text (maximal zwei Zeilen).

Ziemlich sicher, dass Sie nicht tun können, dass der Standard-API verwenden, schon gar nicht mit UILineBreakMode. Darüber hinaus sagt der Style Guide, dass ein Auslassungszeichen zeigt an, dass die Taste, wenn Sie sich für weitere Informationen gedrückt wird Open File -für Beispiel fragen ... für den Namen einer Datei fragen. Ihre vorgeschlagene Verwendung von drei Punkten gegen diese Richtlinie.

Sie würden einige benutzerdefinierte Logik müssen das Verhalten, das Sie beschreiben, zu implementieren, aber ich glaube nicht, dass die Art und Weise ist sowieso zu gehen.

Dies ist keine sehr gute UI Praxis, aber wenn Sie es immer noch tun wollen, ist Ihre beste Wette ist so über eine anklickbare div wie ein Knopf aussehen gestylt zu tun.

Stellen Sie die Breite des div auf einen expliziten Wert und dessen Überlauf versteckt, dann ein Skript auf einem Intervall Ausführen des scrollleft Eigenschaft dieses div einzustellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top