Подтвердить что ты не робот

Скрыть изображение большого пальца UISlider

Я пытаюсь создать UISlider без изображения большого пальца.

Как я могу это сделать, это мой код:

UISlider *sli = [[UISlider alloc] initWithFrame:progressView.frame];
    [sli setThumbImage:nil forState:UIControlStateNormal];
    [sli setBackgroundColor:[UIColor clearColor]];

    [sli setMinimumTrackImage:[[UIImage imageNamed:@"ProgressBlueCap.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal];
    [sli setMaximumTrackImage:[[UIImage imageNamed:@"ProgressBlueCapRight.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal];
4b9b3361

Ответ 1

Гораздо проще:

ObjC

[sli setThumbImage:[[[UIImage alloc] init] autorelease] forState:UIControlStateNormal];

Быстрая версия

sli.setThumbImage(UIImage(), for: .normal)

Ответ 2

Самый простой способ - просто установить цвет Thumb Tint на Очистить в построителе интерфейса - вот так...

введите описание изображения здесь

Voila!

Ответ 3

Это старая ветка, но я нашел ее, чтобы кто-то еще мог.

Вот решение этого в Swift. Я создаю пустой UIImage здесь программно, а затем назначаю его на большой палец.

    let rect = CGRect(x: 0, y: 0, width: 1, height: 1)
    UIGraphicsBeginImageContextWithOptions(CGSize(width: 1, height: 1), false, 0)
    UIColor.clear.setFill()
    UIRectFill(rect)
    if let blankImg = UIGraphicsGetImageFromCurrentImageContext() {
        slider.setThumbImage(blankImg, for: .normal)
    }
    UIGraphicsEndImageContext()

Ответ 4

Однострочное решение:

[_slider setThumbImage:[UIImage new] forState:UIControlStateNormal];

Ответ 5

Я бы попробовал подклассификацию UISlider и переопределить -thumbRectForBounds:trackRect:value:, чтобы вернуть NSZeroRect. Если это не так, попробуйте переопределить -thumbImageForState:, чтобы вернуть nil.