我有一个在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
即使调试器显示了正确的值,但是滑块没有任何视觉变化。它仍然是白色的,颜色没有改变。我在这里搜索了苹果的文档:https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/Controls.html。其中并未说明UISlider的thumbTintColor不适用于iOS 6。它应该按预期工作。我已经检查了线程,一切都在主线程上运行。toggleSliderColor始终在主线程上运行,因此不是线程问题。为什么我的拇指颜色不起作用呢?谢谢,Can.
iOS 7 UI Transition Guide
的信息似乎表明这里有些问题。我已经被暂时调到另一个项目,但等我回来后,我会提交一个错误报告并复制你的。 - GeneralMike