2009-05-20 11 views
-2

Ich dachte, dass eine großartige Ergänzung zu einer iPhone App die Möglichkeit wäre, das OS X Dock in das iPhone zu implementieren. Meine Idee ist es, 5 reguläre Menüs zu haben, die in meiner App ausgewählt werden können. Wenn Sie mit dem Finger über das Menü wischen, werden die einzelnen Symbole vergrößert und wenn Sie eine Option auswählen, springt das Symbol während Sie warten.OS X Dock in einer iPhone App?

Ich persönlich würde dies in meinen Apps lieben, aber ich frage mich, ob es getan werden könnte. Sei es zu CPU-intensiv? Irgendeine Idee, wenn dies in Core Graphics getan werden könnte oder benötigen Sie OpenGL ES?

Danke an alle, die antworten.

Antwort

1

Das Core Animation-Framework sollte für die Art von Animationen, die Sie diskutieren (Bouncing, Skalierung), gut funktionieren. Ich denke, es wird viel einfacher als OpenGL.

Hier ist ein Code-Schnipsel, die ein Symbol, um die y-Koordinate 148 über eine 0,2 Sekunden Dauer animieren sollten bewegen:

[UIView beginAnimations: @"iconBounce" context: NULL]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(iconBounceAnimationDidStop:finished:context:)]; 

CGRect iconPosition = iconImageView.frame; 
iconPosition.origin.y = 148; //bounce up 
iconImageView.frame = iconPosition; 

[UIView setAnimationDuration: 0.2]; 
[UIView commitAnimations]; 

Der Selektor iconBounceAnimationDidStop:finished:context: eine Methode dar, die aufgerufen werden, wenn die Animation abgeschlossen ist. Sie können diese Methode so schreiben, dass sie das Symbol zurück in eine Startposition bewegt, um den Bounce abzuschließen.

0

Ich würde wahrscheinlich OpenGL für diese Art von Grafikverarbeitung verwenden. Die Texturzuordnung/-skalierung erfolgt in OpenGL sehr effizient.

Das heißt, das Problem mit Ihrer Idee ist, dass dies "eine App sein wird, um andere Anwendungen zu öffnen".

+0

Ich bin nicht notwendig, andere Anwendungen zu öffnen. Ich werde Optionen für meine App haben. Also vielleicht ein Icon für E-Mails, ein Icon für mehr Informationen und so weiter. – TheGambler

0

Es ist durchaus machbar mit Core Animation, aber Sie werden in ein Benutzerinteraktionsproblem geraten. Auf dem Mac unterscheidet man zwischen Ziehen und Klicken. Aber auf dem iPhone haben wir nur den Finger und wir sind gewohnt, die Interaktion zu steuern, dh wir tippen auf und ab und es ist ausgewählt. In diesem anderen Modus können Sie sagen, dass Tap-Drag-Lift (zum Vergrößern des Symbols) etwas anderes als Tap-Lift (Auswählen) tun kann. Wenn Sie Ihren Finger über den Symbolstreifen ziehen, ist das aktuelle (vergrößerte) Symbol immer das direkt unter Ihrem Finger und nicht sichtbar, also müssen Sie sich darauf einstellen.

Auch wenn es machbar ist, möchten Sie vielleicht die Benutzererfahrung durchdenken. Auch wenn es irgendwie cool klingt, denke ich, dass es viel Feingefühl braucht, um es in einer mauslosen direkten Interaktionsumgebung richtig aussehen und fühlen zu lassen. Ich wäre überrascht, wenn Apple es nicht schon ausprobieren würde und sich dagegen entscheiden würde.

3

5 ist die genaue Anzahl der Symbole, die perfekt in einen UITabBarController passen und eine einfache Möglichkeit bieten, zwischen Ansichten zu wechseln, die den Apple iPhone Human Interface Guidelines entsprechen und iPhone-Benutzern sehr vertraut sind.

Hier ist ein Video, das zeigt, wie eine App mit einem UITabBarController zu erstellen:

http://www.screentoaster.com/watch/stVUpUQEVLQVteRl1eXFxf/iphonedev_101_uitabbarcontroller

Wenn Sie noch brauchen Sie wirklich das Gefühl, etwas zu haben, das wie das OS X Dock aussieht, würde ich empfehlen Kern mit Animation.

Erstellen Sie eine benutzerdefinierte Ansicht, und fügen Sie im Initialisierungscode für jedes Docksymbol einen CALayer hinzu. Implementieren Sie das Ereignis touchesMoved, um die Fingerposition zu erkennen, und ändern Sie die Grenzen und Positionseigenschaften für Ihre Symbolebenen, um sie zu verschieben/zu skalieren. Sie müssen Ihren Algorithmus zur Anpassung der Symbolgrößen und des Animationsmodus, den Sie verwenden, um das Verhalten in OS X anzupassen, anpassen, aber ich glaube, dass es sich nur um eine lineare Verzerrung handelt, die auf dem Abstand vom Cursor (oder Finger in diesem Fall) basiert).

Implementieren Sie den Code, um die Symbole auf ihre Standardposition zurückzusetzen, und starten Sie die gewünschte Aktion für Ihre Symbole in touchSended.

Um die Symbole zu spiegeln, könnten Sie versuchen, die Position mithilfe einer CABasicAnimation mit der Timing-Funktion kCAMediaTimingFunctionEaseInEaseOut zu animieren und repeating und autoreverse zu aktivieren.

Verwandte Themen