UISlider mit ProgressView kombiniert
Ist es ein apple-Haus-gemacht Weg, um einen UISlider mit einem ProgressView. Dies wird von vielen streaming-Anwendungen wie native "quicktimeplayer" oder "youtube".
(Nur um sicher zu sein: ich bin nur in der Visualisierung interessiert)
cheers Simon
Kommentar zu dem Problem
Verwenden MPVolumeView, die im SDK enthalten developer.apple.com/library/ios/#documentation/mediaplayer/... Kommentarautor: yasirmturk
InformationsquelleAutor der Frage endo.anaconda | 2010-12-21
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine einfache version von dem, was Sie beschreiben.
Es ist "einfach" in dem Sinne, dass ich nicht die Mühe zu versuchen, hinzufügen von Schattierungen und andere Feinheiten. Aber es ist einfach zu bauen, und Sie können zwicken, ziehen Sie in eine subtilere Art und Weise, wenn Sie mögen. Zum Beispiel könnten Sie machen sich Ihr eigenes Bild und nutzen Sie es als Sie den Schieberegler.
Dies ist eigentlich ein UISlider Unterklasse liegen auf der Oberseite eine UIView-Unterklasse, (MyTherm), zieht der thermometer, plus zwei UILabels, dass das ziehen der Nummern.
Den UISlider Unterklasse eliminiert die integrierte track, so dass das thermometer dahinter durchscheint. Aber die UISlider Daumen (Drehregler) ist noch ziehbar in der üblichen Weise, und Sie können ein benutzerdefiniertes Bild, um den Wert Geändert-Ereignis, wenn der Benutzer zieht, und so weiter. Hier ist der code für den UISlider Unterklasse, der beseitigt seine eigene Spur:
Dem thermometer ist eine Instanz einer benutzerdefinierten UIView-Unterklasse, MyTherm. Ich instanziiert es in der Spitze und deaktiviert seine Undurchsichtige und gab es eine Hintergrundfarbe, die der Farbe "Clear". Es hat eine
value
- Eigenschaft, damit er weiß, wie viel zum füllen der thermometer. Hier ist seinedrawRect:
code:Ändern das thermometer Wert, ändern Sie die MyTherm Instanz
value
eine Zahl zwischen 0 und 1, und sagen, es neu zu zeichnen, sich mitsetNeedsDisplay
.InformationsquelleAutor der Antwort matt
Dies ist machbar mit den standard-controls.
Im Interface Builder platzieren Sie Ihre
UISlider
sofort auf IhreUIProgressView
und machen Sie die gleiche Größe haben.Auf eine
UISlider
hintergrund horizontale Linie heißt der track, der trick ist, es unsichtbar. Wir tun dies mit einem transparenten PNG und dieUISlider
MethodensetMinimumTrackImage:forState:
undsetMaximumTrackImage:forState:
.In der
viewDidLoad
- Methode Ihres view-Controllers hinzufügen:wo
self.slider
bezieht sich auf IhreUISlider
.Getestet hab ich den code in Xcode, und dies wird Ihnen ein Schieberegler mit einem unabhängigen Fortschrittsbalken.
InformationsquelleAutor der Antwort Sam Doshi
Erstellen Sie einen UISlider:
Genießen! P. S. ich hätte einige Tippfehler.
InformationsquelleAutor der Antwort Emile Khattar
Lösung, die passt meiner design:
InformationsquelleAutor der Antwort Vitalka
Idee 1:
Sie könnte leicht verwenden Sie den UISlider als einen Fortschritt ansehen, indem bilden von Unterklassen. Es reagiert auf Methoden wie 'setValue:animiert:' mit denen können Sie den Wert festlegen, (ich.e: Fortschritt) in der Ansicht.
Ihre einzige 'Einschränkung' zu erschaffen, was Sie sehen in Ihrem Beispiel ist die Puffer-bar, die Sie erstellen, indem Sie 'kreativ' skinning den UISlider (da können Sie benutzerdefinierte skins, um es), und vielleicht, dass die Haut programmgesteuert.
Idee 2:
Eine andere (einfachere) Möglichkeit ist die Unterklasse UIProgressView, und erstellen Sie einen UISlider innen, die Unterklasse. Sie können Haut den UISlider haben eine durchsichtige Haut (keine bar, nur der Knopf ist sichtbar), und legen Sie es über die UIProgressView.
Können Sie die UIProgressView für die pre-laden (buffering) und den UISlider für die Film Steuerung /Fortschritt-Anzeige.
Scheint ziemlich einfach 🙂
Edit: tatsächlich Ihre Frage zu beantworten, es gibt keine in-house way", aber es wäre einfach zu erreichen mit den Werkzeugen gegeben.
InformationsquelleAutor der Antwort Jake
Können Sie einige trick, wie diese, ist es einfacher und Verständnis. Legen Sie einfach den code unten in Ihre UISlider Unterklasse.
InformationsquelleAutor der Antwort John
Hinzufügen auf matt ' s Lösung, beachten Sie, dass ab iOS 7.0, Umsetzung trackRectForBounds: unmöglich. Hier ist meine Lösung für dieses problem :
In Ihrem UISlider Unterklasse :
mit imageWithColor, da diese Funktion :
Dass Sie richtig kümmern sich um diese lästige trackRectangle.
Ich verbrachte zu viel Zeit mit der Suche nach einer Lösung für dieses problem, hier ist der Hoffnung, dass Sie einige Zeit, um eine andere Arme Seele ;).
InformationsquelleAutor der Antwort CyberDandy
Hier ist eine Lösung in Objective C. https://github.com/abhimuralidharan/BufferSlider
Die Idee ist, erstellen Sie ein UIProgressview als Eigenschaft in den UISlider Unterklasse und fügen Sie die gewünschten Einschränkungen ein Programm.
InformationsquelleAutor der Antwort abhi1992