我有一个可以在 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
总是在主线程上,所以这不是线程问题。为什么我的拇指颜色不起作用?
谢谢,坎。