UISlider пропускает изображения треков в iOS 5 - PullRequest
1 голос
/ 03 декабря 2011

У меня есть UISlider, и я устанавливаю пользовательские trackImages и thumbImage, используя следующий код:

[progress setMinimumTrackImage:[UIImage imageNamed:@"scrubbar-inactive.png"] forState:UIControlStateNormal];
[progress setMaximumTrackImage:[UIImage imageNamed:@"scrubbar-active.png"] forState:UIControlStateNormal];
[progress setThumbImage:[UIImage imageNamed:@"scrubbar-ball.png"] forState:UIControlStateNormal];
[progress setThumbImage:[UIImage imageNamed:@"scrubbar-ball.png"] forState:UIControlStateHighlighted];

Все работает нормально, но в iOS 5 нечасто я получаю только thumbImage и нет trackImages под ним.

Ответы [ 2 ]

2 голосов
/ 29 апреля 2012

Я уверен, что вы обновляете progress.value в таймере и не проверяете значения NaN. Просто добавьте проверку для NaN следующим образом:

//a necessary value for a slider
NSTimeInterval sliderPosition = ...;

if (sliderPosition != sliderPosition)
    return;    //NaN detected
else
    [progress setValue:sliderPosition animated:NO];

Существует также константа с именем NAN, но она не сработала для меня.

1 голос
/ 07 марта 2012

У меня была похожая проблема раньше, когда изображения треков всегда хорошо отображались в iOS 4, но не в iOS 5. Я пытался изменить размер изображений.И это сработало для меня.Пожалуйста, попробуйте это:

UIImage *leftTrackImage = [[UIImage imageNamed:@"progress_left.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 0)];
UIImage *rightTrackImage = [[UIImage imageNamed:@"progress_right.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 0)];
...