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)
まったく同じコードを入力したところ、最初のコードで奇妙なメッセージが表示されました。ただし、2 番目の結果は正しいです。次に、赤に設定した後、正しい結果も得られます。
(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
常にメインスレッド上にあるため、スレッドの問題ではありません。親指の色が機能しないのはなぜですか?
ありがとう、カン。