Пользовательский UISlider без изображения

Я пытаюсь изменить размер UISlider большого пальца в iOS7, но не могу. Я знаю, что могу использовать setThumbImage, но не хочу использовать изображения.

setThumbImage:[UIImage imageNamed:@"sliderThumb.png"]

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


person Hossein    schedule 02.04.2014    source источник
comment
Отметьте это сообщение: stackoverflow.com/questions/18983726/, это может вам помочь;)   -  person Lapinou    schedule 02.04.2014
comment
Цвет успешно изменен, теперь мой единственный вопрос: как изменить размер большого пальца? :)   -  person Hossein    schedule 02.04.2014
comment
Отметьте это сообщение: stackoverflow.com/questions/11221966/, если вы не можете изменить размер без использования изображения большого пальца, вы можете использовать прозрачное изображение, затем вы можете изменить размер большого пальца и изменить цвет, как вы хотеть.   -  person Lapinou    schedule 02.04.2014


Ответы (1)


Приведенный ниже код SWIFT позволяет легко изменять размер и цвет бегунка ползунка:

override func viewDidLoad(){
    super.viewDidLoad()
    self.updateSlider(self.mySlider, thumbSize: 16, color: UIColor.redColor())
}

func updateSlider(slider: UISlider, thumbSize: CGFloat, color: UIColor){
    let thumbImage = createThumbImage(thumbSize, color: color)
    slider.setThumbImage(thumbImage, forState: UIControlState.Normal)
    slider.setThumbImage(thumbImage, forState: UIControlState.Highlighted)
}

func createThumbImage(size: CGFloat, color: UIColor) -> UIImage {
    let layerFrame = CGRectMake(0, 0, size, size)

    let shapeLayer = CAShapeLayer()
    shapeLayer.path = CGPathCreateWithEllipseInRect(layerFrame.insetBy(dx: 1, dy: 1), nil)
    shapeLayer.fillColor = color.CGColor
    shapeLayer.strokeColor = color.colorWithAlphaComponent(0.65).CGColor

    let layer = CALayer.init()
    layer.frame = layerFrame
    layer.addSublayer(shapeLayer)
    return self.imageFromLayer(layer)
}

func imageFromLayer(layer: CALayer) -> UIImage {
    UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, UIScreen.mainScreen().scale)
    layer.renderInContext(UIGraphicsGetCurrentContext()!)
    let outputImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return outputImage
}
person Vegard    schedule 05.05.2016