У меня есть приложение, которое отлично работает на iOS 6. Я установил мигающий эффект для большого пальца UISlider таким образом:
-(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];
}
Когда я звоню startBlinkingSlider
, мой слайдер начинает мигать красным в iOS 6. Если я запускаю то же самое приложение на своем устройстве iOS 7, ничего не происходит. Большой палец слайдера сохраняет свой первоначальный белый цвет. Я установил точку останова на строке, где я установил thumbTintColor
. В отладчике вот что я получаю:
(lldb) po self.effectAmountSlider.thumbTintColor
error: failed to get API lock
(lldb) po self.effectAmountSlider.thumbTintColor
UIDeviceRGBColorSpace 0 0 0 1
(lldb)
Я набрал тот же самый код и получил странное сообщение в первом. Однако второй результат правильный. Затем, установив его на красный, я получаю правильный результат:
(lldb) po self.effectAmountSlider.thumbTintColor
UIDeviceRGBColorSpace 1 0 0 1
Несмотря на то, что отладчик показывает правильное значение, я не вижу визуальных изменений в слайдере. Он по-прежнему белый, цвет никоим образом не меняется. Я искал документы Apple здесь: https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/Controls.html
Он ничего не говорит о том, что UISlider thumbTintColor не работает как iOS 6. Он должен оставаться работоспособным, как ожидалось. Я проверил поток, и все работает на основном потоке. toggleSliderColor
всегда находится в основном потоке, так что это не проблема с потоками. Почему мой цвет большого пальца не работает?
Спасибо, может.