Warum markieren meine UISegmentControl-Segmente in iOS 8, wenn ich Hintergrundbilder für alle Zustände eingestellt habe?

8

In iOS 6/7 habe ich UISegmentedControl mit Hintergrundbildern verwendet, um einen ähnlichen Effekt zu erzeugen:

Ich habe dies erreicht, indem ich das Hintergrundbild für die UISegmentedControl für jeden der Standardzustände wie folgt gesetzt habe:

%Vor%

Wenn ein Segment ausgewählt oder hervorgehoben wird, hat es den schönen blauen Balken darunter und ich setze Textattribute, um die Textfarbe blau zu setzen. Es gibt einen zusätzlichen Code für die Teiler, aber ich denke, das ist nicht verwandt, also habe ich es weggelassen.

Mein Problem ist, dass es in iOS 8 einige Aktionen gibt, die dazu führen, dass der Hintergrund des Segments grau wird und schlecht aussieht; Wenn Sie beispielsweise Ihre Auswahl ändern, wird die Zelle, die Sie angetippt haben, grau, bis der Übergang abgeschlossen ist, und die andere ist, dass wenn Sie ein bereits ausgewähltes Segment antippen und halten, es grau wird. Beide sehen identisch aus und können unten gesehen werden.

Einige zusätzliche Teile von möglicherweise relevanten Informationen:

  • Die tintColor für das segmentierte Control ist eindeutig
  • Ich untergliedere nicht UISegmentedControl
  • Ich habe keine Eigenschaften für UISegmentedControl mit seinem Aussehen-Proxy
  • geändert
  • Ich verwende 1 Punkt breite Bilder für die Hintergrundbilder und UISegmentedControl bestimmt automatisch die CapInsets und kachelt das Bild
Acey 29.09.2014, 23:58
quelle

2 Antworten

11

Der Grund dafür, dass das Segment bei der Auswahl eines bereits ausgewählten Segments grau wird, liegt daran, dass dem segmentierten Steuerelement der Status für ausgewählt und gleichzeitig hervorgehoben fehlt.

In Ihrem Fall:

%Vor%

sollte dieses Problem beheben.

  

Wenn Sie Ihre Auswahl ändern, wird die angetippte Zelle grau bis   Der Übergang ist abgeschlossen.

Ich konnte das nicht reproduzieren, aber vielleicht werden dadurch beide Probleme behoben.

    
GraemeArthur 12.04.2015, 20:19
quelle
6

Nur für den Fall, in Swift wäre das

segmentedControl.setBackgroundImage(image, forState:[.Selected, .Highlighted], barMetrics:.Default)

    
nikans 04.12.2015 22:37
quelle

Tags und Links