ios - UISlider thumbTintColor 在 iOS 7 上没有改变(在 iOS 6 上很好)

标签 ios objective-c ios6 ios7 uislider

我有一个在 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 时,我的 slider 在 iOS 6 中开始闪烁红色。如果我在我的 iOS 7 设备上运行完全相同的应用程序,则没有任何反应。 slider 的拇指保留其原始的白色。我在设置 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

即使调试器显示了正确的值,我也没有在 slider 中看到任何视觉变化。它仍然是白色的,颜色没有任何变化。我在这里搜索了 Apple 的文档:https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/Controls.html

它没有说明 UISlider 的 thumbTintColor 不能作为 iOS 6 工作。它应该按预期保持工作。我检查了线程,一切都在主线程上运行。 toggleSliderColor 始终在主线程上,因此这不是线程问题。为什么我的拇指颜色不起作用?

谢谢,Can。

最佳答案

我发现了一个解决方法。通过首先调用“setThumbImage:forState:”方法,“thumbTintColor”属性将生效。

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

我在 iOS Simulator 7.0 (463.9.4.2) 版本上对此进行了测试。

关于ios - UISlider thumbTintColor 在 iOS 7 上没有改变(在 iOS 6 上很好),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18983726/

相关文章:

ios - 在运行的动画中检索点击的 UIButton,它可以稍微离开屏幕

ios - 你如何设置 UICollectionView 动画的持续时间?

ios - 从 NSDecimalNumber 中删除负号 (-) 给我一个错误

ios - UICollectionView 适用于 iOS7 但不适用于 iOS6

iphone - 使用 CoreData 创建新闻提要

ios - Google+ iOS SDK - 获取关注 "me"的人列表

c++ - 将源文件类型更改为 Objective-C++ 后的链接器错误

ios - iOS客户端如何处理https

ios - 根据类型隐藏 iOS 推送通知

objective-c - 核心动画和设备方向