2013-03-15 6 views
6

Ich versuche einen UISlider zu erstellen, der eine fette Spur hat. Ich habe versucht this, und es funktioniert fast. Wenn der UISlider jedoch zuerst angezeigt wird, ist die Trackleiste normal. Nur wenn es ein Berührungsereignis bekommt, wird es dicker.Wie macht man UISlider dicker, wenn es zum ersten Mal angezeigt wird?

Hier ist der Code, den ich in meine Unterklasse von UISlider hinzugefügt, wie empfohlen:

- (CGRect)trackRectForBounds:(CGRect)bounds 
{ 
    return bounds; 
} 

Ich verstehe nicht, wie das funktioniert, so kann ich nicht herausfinden, warum es nicht perfekt funktioniert. Hier sind meine Fragen:

  1. Wie funktioniert das?
  2. Wie kann ich steuern, wie dick die Spur ist?
  3. Wie kann ich die Spur beeinflussen, wenn der UISlider zuerst gezeichnet wird?

Natürlich ist die dritte Frage die wichtigste, obwohl die anderen mir in meinem Verständnis helfen werden.

Eine andere Sache zu beachten: wenn es zum ersten Mal angezeigt wird, blende ich den Daumen:

[slider setThumbImage:[[UIImage alloc] init] forState:UIControlStateNormal]; 

Wenn der Benutzer den Schieber berührt, ich den Daumen so anzuzeigen:

[slider setThumbImage:nil forState:UIControlStateNormal]; 

I Erwähnen Sie dies, weil ich mich frage, ob das irgendwie die trackRectForBounds-Magie stört.

Danke!

Antwort

4

Frage 1. Von the docs:

Wenn Sie die Spur Rechteck anpassen möchten, können Sie diese Methode überschreiben und ein anderes Rechteck zurück. Das zurückgegebene Rechteck wird verwendet, um die Spur- und Daumenbilder während des Zeichnens zu skalieren.

Die Standardimplementierung dieser Methode gibt ein kleineres Rechteck zurück als das, an das es übergeben wird. Du gibst einfach zurück, was passiert ist, anstatt es zuerst zu verkleinern.

Frage 2. Return ein größeres oder kleineres CGRect, zum Beispiel:

return CGRectMake(0, 0, 500, 200); 

Frage 3. Ich denke, die Methode nur aufgerufen wird, wenn Sie kein eigenes Bild gesetzt haben, das ist Warum hat es keine Wirkung, bis Sie das Bild auf setzen. Wenn Sie das Bild überschreiben möchten, versuchen Sie, die Slider-Bilder mit tatsächlichen Bildern zu überschreiben, die Ihren Vorstellungen entsprechen.

+2

Schön - gute Antworten. Ich weiß nicht, wie Sie von der "Standard-Implementierung" in Frage 1 wussten, aber das erklärt alles - danke! – Bob

+0

Typische Stapelüberlaufreaktion. – benjaminhallock

+0

@benjaminhallock Was ist los mit meiner Antwort? –

Verwandte Themen