8

I need to change the background of a UISlider, my goal is to create UISlider as the image below:

UISlider

I tried setBackgroundImage method, but it is like the frame of the slider.

How do I change the background image of the slider?

JAL
  • 41,701
  • 23
  • 172
  • 300
erdemgc
  • 1,701
  • 3
  • 23
  • 43

4 Answers4

10

1. Add image view with same dimension below your slider. Set your multicolor image to it.

2. Use transparent image as left and right of slider image

   UIImage *clearImage = [[UIImage imageNamed:@"clearSliderBar.png"] stretchableImageWithLeftCapWidth:14.0 topCapHeight:0.0];
    [slider setMinimumTrackImage:clearImage forState:UIControlStateNormal];
    [slider setMaximumTrackImage:clearImage forState:UIControlStateNormal];

This is 20x8 sample transparet image for test

Aditya Deshmane
  • 4,676
  • 2
  • 29
  • 35
3

Quick Swift 3 translation of the accepted answer. Remember to add your custom colors/view behind the slider before making the track images transparent.

let slider = UISlider()
let clearImage = UIImage().stretchableImage(withLeftCapWidth: 14, topCapHeight: 0)
slider.setMinimumTrackImage(clearImage, for: .normal)
slider.setMaximumTrackImage(clearImage, for: .normal)
JAL
  • 41,701
  • 23
  • 172
  • 300
0

Did you try the accepted answer from here? It does the trick:

UIImage *sliderLeftTrackImage = [[UIImage imageNamed: @"SliderMin.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0];
UIImage *sliderRightTrackImage = [[UIImage imageNamed: @"SliderMax.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0];
[mySlider setMinimumTrackImage: sliderLeftTrackImage forState: UIControlStateNormal];
[mySlider setMaximumTrackImage: sliderRightTrackImage forState: UIControlStateNormal];
Community
  • 1
  • 1
Nikos M.
  • 13,685
  • 4
  • 47
  • 61
0

For setting the image to your slider you can use the setMinimumTrackImage, setMaximumTrackImage methods. For your requirement set both to same image.

  UIImage *slider = [[UIImage imageNamed: @"Slider.png"] stretchableImageWithLeftCapWidth: 7 topCapHeight: 0];

  [mySlider setMinimumTrackImage: slider forState: UIControlStateNormal];
  [mySlider setMaximumTrackImage: slider forState: UIControlStateNormal];

For more please check these links:

http://jasonlawton.com/blog/customizing-uislider-in-iphone/

Custom Slider

Another Custom code

Custom with Popover value display Slider

Slider image

Community
  • 1
  • 1
Dhaval Bhadania
  • 3,090
  • 1
  • 20
  • 35