UISlider установил изображение с углами

Здесь мне нужно закруглить uslider, но когда я пытаюсь установить изображения, он показывает прямоугольное изображение,

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

Здесь моя кодировка

UIImage *volumeBackgroundImage = [[UIImage imageNamed:@"l2.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(9, 5, 7, 5)];
    [self.audioSlider setMinimumTrackImage:[[UIImage imageNamed:@"l1.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(9, 5, 7, 5)]
                               forState:UIControlStateNormal];
    [self.audioSlider setMaximumTrackImage:volumeBackgroundImage
                               forState:UIControlStateNormal];
    [self.audioSlider setThumbImage:[UIImage imageNamed:@"sliderhandle.png"]
                        forState:UIControlStateNormal];

Может ли кто-нибудь помочь достичь этого


person dineshprasanna    schedule 05.10.2013    source источник


Ответы (3)


У вас должны быть изображения со скругленными углами. Например: введите здесь описание изображения

Затем просто используйте это изображение следующим образом:

[_slider setMinimumTrackImage:[[UIImage imageNamed:@"black_dot.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 12, 12, 12)]
    forState:UIControlStateNormal];

[_slider setMaximumTrackImage:[[UIImage imageNamed:@"blue_dot.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 12, 12, 12) 
    forState:UIControlStateNormal];

(где black_dot.png — пример изображения, а blue_dot.png — то же самое, но синего цвета)

(Если изображение пикселизировано - то Вам нужно получить это изображение в два раза больше - изображение retina - [email protected])

(Или, если вам действительно нужно изображение меньшего размера, чем в данном примере, просто переименуйте это изображение как [email protected] и вместо: UIEdgeInsetsMake(12, 12, 12, 12) используйте: UIEdgeInsetsMake(6, 6, 6, 6))

Подробнее см. здесь: https://stackoverflow.com/a/8656216/894671

person Guntis Treulands    schedule 05.10.2013

Вы можете попытаться нарисовать изображение нужного размера, а не добавлять изображение, которое может вызвать искажение.

Решение искажения слайдера

person Pooja Kamath    schedule 21.01.2019

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

Одним из решений может быть самостоятельное округление в конце:

self.audioSlider.layer.cornerRadius = 5.0;

Поэкспериментируйте с этим значением, и оно должно сработать.

Кроме того, вы можете убедиться, что ваши изображения имеют закругленные концы.

person Mundi    schedule 05.10.2013
comment
Нет, сэр, он все равно не работает, он возвращает тот же результат. Есть какое-нибудь решение - person dineshprasanna; 05.10.2013
comment
Какое решение вы пробовали? Оба? - person Mundi; 05.10.2013
comment
Во-первых, они возвращают одинаковые результаты. Во-вторых, когда я помещаю изображения с закругленными краями, они отображаются как пикселизированное изображение. - person dineshprasanna; 05.10.2013
comment
Так что кажется достаточно придать изображениям более высокое разрешение. - person Mundi; 05.10.2013