Question UISlider thumbTintColor ne change pas sur iOS 7 (bien sur iOS 6)


J'ai une application qui fonctionne parfaitement sur iOS 6. J'ai un effet de clignotement sur le pouce d'un UISlider de cette façon:

-(void)startBlinkingSlider{
    isSliderBlinking = YES;
    isSliderTinted = NO;
    [self performSelector:@selector(toggleSliderColor) withObject:nil afterDelay:0.2];
}

-(void)toggleSliderColor{
    if(isSliderBlinking){
        if(isSliderTinted){
            self.effectAmountSlider.thumbTintColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
        }else{
            self.effectAmountSlider.thumbTintColor = [UIColor colorWithRed:255 green:0 blue:0 alpha:1];
        }
        isSliderTinted = !isSliderTinted;
        [self performSelector:@selector(toggleSliderColor) withObject:nil afterDelay:0.2];
    }
}

-(void)stopBlinkingSlider{
    isSliderBlinking = NO;
    isSliderTinted = NO;
    self.effectAmountSlider.thumbTintColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
}

Quand j'appelle startBlinkingSlider mon curseur se met à clignoter en rouge sur iOS 6. Si je lance la même application exacte sur mon appareil iOS 7, rien ne se passe. Le pouce du curseur conserve sa couleur blanche d'origine. J'ai mis un point d'arrêt sur la ligne où j'ai mis la thumbTintColor. En débogueur, voici ce que j'obtiens:

(lldb) po self.effectAmountSlider.thumbTintColor
error: failed to get API lock
(lldb) po self.effectAmountSlider.thumbTintColor
UIDeviceRGBColorSpace 0 0 0 1
(lldb) 

J'ai tapé exactement le même code et j'ai reçu un message étrange dans le premier. Cependant, le deuxième résultat est correct. Ensuite, après l'avoir mis au rouge, j'obtiens également le résultat correct:

(lldb) po self.effectAmountSlider.thumbTintColor
UIDeviceRGBColorSpace 1 0 0 1

Même si le débogueur affiche la valeur correcte, je ne reçois aucun changement visuel dans le curseur. C'est toujours blanc, la couleur ne change en rien. J'ai cherché les documents d'Apple ici: https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/Controls.html

Il ne dit rien sur le thumbTintColor d'UISlider qui ne fonctionne pas comme iOS 6. Il devrait rester opérationnel comme prévu. J'ai vérifié le thread et tout fonctionne sur le thread principal. toggleSliderColor est toujours sur le thread principal donc ce n'est pas un problème de threading. Pourquoi la couleur de mon pouce ne fonctionne pas?

Merci, Can.


14
2017-09-24 13:59


origine


Réponses:


Sur la base de la réponse de @ aaronsti, j'ai constaté que les éléments suivants fonctionnaient pour moi. Réglage de l'image du pouce sur nil n'a eu aucun effet.

  [_slider setThumbImage:[_slider thumbImageForState:UIControlStateNormal] forState:UIControlStateNormal];
_slider.minimumTrackTintColor = minTintColor;
_slider.thumbTintColor = thumbTintColor;

10
2018-02-09 17:37



J'ai découvert une solution de contournement. En appelant d'abord la méthode 'setThumbImage: forState:', la propriété 'thumbTintColor' prendra alors effet.

[self.slider setThumbImage:[UIImage imageNamed:@"Thumb.png"] 
                  forState:UIControlStateNormal];
self.slider.thumbTintColor = [UIColor blackColor];

Je l'ai testé sur la version 7.0 (463.9.4.2) d'iOS Simulator.


19
2018-01-28 04:23



Je viens juste de lire le iOS 7 UI Transition Guide encore ce matin, et trébuché sur une déclaration sous Slider. SI SOIT maximumTrackTineColor OU thumbTintColor sont nuls, alors les deux propriétés sont ignorées. J'ai donc essayé de définir toutes les couleurs de teinte, le pouce encore blanc.

J'ai entré un rapport de bogue sur ceci - # 15277127 - référencez-le si vous entrez votre propre bogue. Plus le rapport de bogue est important, plus il est probable qu'Apple le répare rapidement.

EDIT: Apple a dupé mon bug à un autre - cela était évidemment connu il ya quelque temps.


11
2017-10-21 13:40



Jusqu'à présent, dans Xcode 6.2, iOS 8.2, le problème est toujours là et la solution fonctionne toujours. Version rapide:

slider.setThumbImage(slider.thumbImageForState(.Normal), forState:.Normal)

2
2018-04-15 07:45