ios - 自定义 UISlider 无图像

标签 ios cocoa-touch uislider

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

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

我想更改没有图像的 UISlider 拇指的大小和颜色。我可以这样做吗?

最佳答案

通过下面的 SWIFT 代码,您可以轻松更改 slider slider 的大小和颜色:

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
}

关于ios - 自定义 UISlider 无图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22815531/

相关文章:

ios - ios7 中 AlertView 不旋转?

ios - Touch Up Inside 的全局事件处理程序

ios - 删除 UISlider 旋钮或快速更改图像

ios - 如何从另一个单例类更新 UISlider?

ios - 外设管理器如何理解哪个是 CBCentral(设备)试图访问服务/特征

IOS - UIScrollView 拒绝滚动

ios - XCODE/SWIFT - 将 ADMOB 横幅重新定位到底部

iphone - UITextView 在textview文本中插入文本

objective-c - 在突出显示/选择单元格时,在自定义 UITableViewCell 中为 UITextField 提供正确的文本颜色

ios - 使用 slider 选择 View 背景的颜色