我有一个定制的UISlider,它的轨迹图像有时会消失。它是随机发生的,当它的父视图控制器被推到可见时(我从未看到它实际上消失了)。
以下是我设置UISlider的代码:
timeSlider = [[UISlider alloc] initWithFrame:CGRectMake(55, 8, 210, 23)];
timeSlider.backgroundColor = [UIColor clearColor];
UIImage *blutrackImg = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"bluetrack" ofType:@"png"]];
UIImage *whitetrackImg = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"whitetrack" ofType:@"png"]];
//UIEdgeInsetsMake(top,left,bottom,right)
UIImage *stetchLeftTrack = [blutrackImg stretchableImageWithLeftCapWidth:9.0 topCapHeight:0.0];
UIImage *stetchRightTrack = [whitetrackImg stretchableImageWithLeftCapWidth:9.0 topCapHeight:0.0];
[timeSlider setThumbImage: [UIImage imageNamed:@"whiteslide2.png"] forState:UIControlStateNormal];
[timeSlider setMinimumTrackImage:stetchLeftTrack forState:UIControlStateNormal];
[timeSlider setMaximumTrackImage:stetchRightTrack forState:UIControlStateNormal];
timeSlider.continuous = NO;
[timeSlider addTarget:self action:@selector(trackTime:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:timeSlider];
我在iOS 5.0上构建。有没有人碰到这样的事情?
答案 0 :(得分:8)
解决方案:我认为这个问题是由以下错误引起的:
我有一个定时器,它使用slider.value属性而不是[slider setValue:animated:]方法设置滑块的值。我也没有理智地检查所设定的值。
解决问题已解决了这个问题。
答案 1 :(得分:5)
我是第二个“答案”,并希望esp。指出有关理智检查价值观的一点。我认为使用slider.value或[slider setValue]并不重要,将其设置为NaN意味着iOS5中的背景消失。
注意:如果您正在使用iPod库并询问当前位置,那么将NaN作为返回值可能会经常发生。
答案 2 :(得分:2)
我有同样的问题,它是由重复资源引起的。如果它是在xCode中重命名recources,请在Build Phases中检查它。
答案 3 :(得分:1)
NaN也是我的问题,但它比我的预期还要糟糕......甚至在iOS5上将UISlider设置为NAN一次,似乎永远打破了控件的实例是令人惊讶的并花了一点时间来追踪。