2010-03-06 4 views
5

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

Я попытался настроить свое изображение с помощью leftCapWidth и т. Д., Но это просто делает его максимально растянутым, а затем начинает распространять один пиксель информации по ползунку.

Мне нравится изображение, которое не изменяется при перемещении ползунка.

Возможно ли это?

+2

мне удалось временно обойти эту проблему сейчас, создав UIImageView и добавив, что к вид сзади слайдера. Затем я установил слежение за ползунком на пробел. Это не идеальное решение :( – Fogmeister

+0

Вы когда-нибудь получали решение? Я попытался использовать '[maxImage resizableImageWithCapInsets: UIEdgeInsetsZero resizingMode: UIImageResizingModeTile]', который работает, но, кажется, помещает большой палец под изображениями дорожки и имеет около 2px пустое место на обоих концах слайдера. – sooper

+0

Если бы я делал это сейчас, я бы сделал это с нуля, как свой собственный пользовательский элемент управления. Возможно, используя PaintCode для его рисования. – Fogmeister

ответ

4

Вы можете использовать это, чтобы сделать фон обычая UIslider, сделать UIslider как IBOutlet

[yourslider setThumbImage:[UIImage imageNamed:@"icon0.png"] forState:UIControlStateNormal]; 



yourslider.minimumValue=1; 
yourslider.maximumValue=10; 

UIImage *sliderLeftTrackImage = [[UIImage imageNamed: @"yellow_bg.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0]; 
UIImage *sliderRightTrackImage = [[UIImage imageNamed: @"yellow_bg.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0]; 

[yourslider setMinimumTrackImage: sliderLeftTrackImage forState: UIControlStateNormal]; 
[yourslider setMaximumTrackImage: sliderRightTrackImage forState: UIControlStateNormal];