Установить thumbImage и смотреть, как ползунок исчезает? - PullRequest
0 голосов
/ 14 июня 2010
[sld1 setThumbImage:[UIImage imageNamed:@"Blue.png"] forState:UIControlStateHighlighted];
[sld1 setThumbImage:[UIImage imageNamed:@"Blue.png"] forState:UIControlStateNormal     ];

Не приведет ли это к исчезновению изображения ползунка?Мои все ушли.(Изображение с большим пальцем отображается очень хорошо.)

Документы Apple делают так, будто я могу использовать любой ONE из 2-х строк кода выше.(Но я думаю, мне действительно нужны оба.)

И я не могу найти ничего о том, «ты всегда должен делать все 4»:

Set the normal-state image.
Set the highlighted-state image.
Set the setMinimumTrackImage.
Set the setMaximumTrackImage.

1 Ответ

1 голос
/ 14 июня 2010

Если вы начинаете настраивать UISlider с графикой, вы должны установить как минимум 3 графических элемента. Правая и левая сторона трекбара и изображение большого пальца:

Вот как я это сделал в последний раз, когда использовал UISlider:

    CGRect frame = CGRectMake(20.0f, 6.0, 280.0f, 20.0f);
    UISlider *customSlider = [[UISlider alloc] initWithFrame:frame];
    [customSlider addTarget:self action:@selector(sliderMove:) forControlEvents:UIControlEventValueChanged];
    [customSlider addTarget:self action:@selector(sliderStart:) forControlEvents:UIControlEventTouchDown];
    [customSlider addTarget:self action:@selector(sliderEnd:) forControlEvents:UIControlEventTouchUpInside];        
    [customSlider addTarget:self action:@selector(sliderEnd:) forControlEvents:UIControlEventTouchUpOutside];   

    // in case the parent view draws with a custom color or gradient, use a transparent color
    customSlider.backgroundColor = [UIColor clearColor];    
    UIImage *stetchLeftTrack = [[UIImage imageNamed:@"slider.png"]
                                stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];

     UIImage *stetchRightTrack = [[UIImage imageNamed:@"slider_right.png"]
                                stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];

    [customSlider setThumbImage: [UIImage imageNamed:@"slider-knop.png"] forState:UIControlStateNormal];
    [customSlider setMinimumTrackImage:stetchLeftTrack forState:UIControlStateNormal];
    [customSlider setMaximumTrackImage:stetchRightTrack forState:UIControlStateNormal];

В моей оптике нет смысла иметь подсвеченное состояние для UISlider или любое другое состояние, ваш палец, скорее всего, закроет изображение большого пальца, поэтому пользователь никогда его не увидит. Я не уверен, что это просто происходит от UIButton и, возможно, он не может справиться с этим?

...