Ist es möglich, dem UISlider-Bild ein Label hinzuzufügen?

8

Ich möchte dem Schieberegler des Schiebereglers eine Beschriftung hinzufügen, die den Wert des Schiebereglers anzeigt und sich auch ändert, wenn der Schieberegler nach rechts gezogen wird. Ist es möglich?

Alle Kommentare oder Vorschläge wären willkommen.

    
Ashutosh 18.05.2011, 15:56
quelle

7 Antworten

10

Sie könnten etwas ähnliches wie dieses Beispiel tun, das Text direkt auf Ihr Bild zeichnet. Es ist ein grobes Beispiel, also müssen Sie es ändern, um für Ihr Projekt sinnvoll zu sein.

%Vor%     
jaminguy 18.05.2011, 16:41
quelle
10

Ich nehme das Bild vom Schieberegler (UIImageView) und füge mein Label hinzu. Schön und sauber.

%Vor%

Dann ändern Sie den label.text wann immer Sie möchten.

Hinweis: Die Unteransichtsreihenfolge von UISlider kann sich in Zukunft ändern, es ist jedoch unwahrscheinlich, dass der Daumen nicht mehr die oberste Ansicht ist, da dies immer der wichtigste Interaktionspunkt in einem Schieberegler ist.

Swift 3 - Detaillierteres Beispiel (verlinke deinen Slider in IB)

%Vor%     
Matjan 01.01.2014 17:31
quelle
4

Fügen Sie in Interface Builder einen UISlider und einen UILabel hinzu. Erstellen Sie IBOutlets, um auf sie im Code zuzugreifen, und fügen Sie eine IBAction hinzu, um auf Änderungen des Schiebereglerwerts zu reagieren.

Dann schreiben Sie in Ihrem Code:

%Vor%

BEARBEITEN: Fügen Sie Folgendes hinzu, um den Schieberegler und die Beschriftung mit Code zu erstellen:

%Vor%     
Felix 18.05.2011 16:37
quelle
2

Sie können auf das Rect für die Thumb-Bildansicht des Schiebereglers mit -thumbRectForBounds:trackRect:value:] zugreifen. Wenn Sie also eine UILabel -Untersicht hinzufügen, können Sie sie relativ zur Thumb-Bildansicht in -layoutSubviews mit diesem zurückgegebenen Rect ausrichten.

Wenn Sie jedoch Ihr Layout mit Autolayout an das Thumb Image anpassen möchten, müssen Sie direkt auf den UIImageView des Thumbs zugreifen. Ich bin nicht scharf darauf, die Subviews von UIKit kit-Komponenten allgemein zu durchsuchen, aber ich denke, dass Sie Details der öffentlichen API verwenden können, um nach der Bildansicht in einer zukunftssicheren Weise zu suchen:

- (UIImageView*) thumbImageView { __block UIImageView *imageView = nil; [self.subviews enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(UIImageView *candidate, NSUInteger idx, BOOL *stop) { if ([candidate isKindOfClass:[UIImageView class]] && candidate.image == [self thumbImageForState:UIControlStateNormal]) { imageView = candidate; *stop = YES; } }]; return imageView; }

Die API bietet die Möglichkeit, für den Daumen eine UIImage festzulegen, sodass Sie diese als Test verwenden können, um sicherzustellen, dass Sie keine andere Bildansicht erhalten. Dies ist noch sicherer, wenn Sie explizit ein Thumb-Bild selbst festlegen (da es nicht unmöglich ist , dass der Schieberegler möglicherweise geändert wird, um das Thumb Image in Zukunft zu zeichnen ...). Außerdem ist die Daumenbildansicht derzeit die letzte Unteransicht (nicht garantiert, vorwärts), also mache ich hier eine umgekehrte Aufzählung, um sie hoffentlich so schnell wie möglich zu bekommen, ohne Annahmen über ihren Index zu machen.

NB: Ich musste meine Daumenbeschriftung träge erstellen, da die Unteransichten von UISlider so zu sein scheinen.

    
Jonathan Crooke 19.11.2014 11:28
quelle
1
%Vor%     
shweta sharma 31.05.2016 13:17
quelle
1

Eine einfache Implementierung einer benutzerdefinierten Klasse in Swift 3.2. Das funktioniert gut für mich.

%Vor%

Ich hoffe es hilft :)

    
Peter Ivanics 01.08.2017 09:26
quelle
0

mach das schön und einfach. Zuerst ist das das Endergebnis

und jetzt, Code:

%Vor%

Die obigen Methoden werden von einer NSLayoutConstraint -Kategorie verwendet, die ich verwende (kommt bald)

%Vor%     
abbood 19.02.2016 19:05
quelle

Tags und Links