【问题标题】:Custom UISlider without image没有图像的自定义 UISlider
【发布时间】:2014-04-02 15:02:04
【问题描述】:

我正在尝试在 iOS7 中调整 UISlider thumb 的大小,但我做不到。我知道可以使用setThumbImage,但我不想使用任何图像。

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

我想改变UISlider thumb 的大小和颜色,没有图像。我可以这样做吗?

【问题讨论】:

标签: ios cocoa-touch uislider


【解决方案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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多