【问题标题】:Swift 4 Xcode 9 UISlider 3 colors visible from the startSwift 4 Xcode 9 UISlider 3 颜色从一开始就可见
【发布时间】:2018-02-15 12:39:54
【问题描述】:

如何在 swift 4 Xcode 9 中制作黄色、绿色、红色 3 种颜色的滑块?它们应该按这个顺序排列,如果您启动应用程序,您会看到它是一个 3 色滑块。没有 tintcolored 滑块在拇指所在位置后会改变颜色。即使没有与之交互,它也应该是三色的。滑块拇指应在滑块颜色之后改变颜色。

【问题讨论】:

  • 显示你的代码,到目前为止你尝试了什么?这看起来像是家庭作业。
  • 我试过 minimumTint 和 maximumTint 我试图在滑块内找到一个拇指不在的值 我不知道要尝试什么因为滑块设置了两种颜色开始,我知道没有办法改变它

标签: xcode colors swift4 uislider


【解决方案1】:

我使用 CAGradientLayer 来设计滑块的最大和最小轨道图像,并为滑块拇指图像设计一个矩形。随意根据您的需要定制它

 func setSlider(slider:UISlider) {
    let tgl = CAGradientLayer()
    let frame = CGRect(x: 0.0, y: 0.0, width: slider.bounds.width, height: 20.0 )
    tgl.frame = frame

    tgl.colors = [UIColor.red.cgColor, UIColor.yellow.cgColor, UIColor.green.cgColor]

    tgl.borderWidth = 1.0
    tgl.borderColor = UIColor.gray.cgColor
    tgl.cornerRadius = 5.0

    tgl.endPoint = CGPoint(x: 1.0, y:  1.0)
    tgl.startPoint = CGPoint(x: 0.0, y:  1.0)

    UIGraphicsBeginImageContextWithOptions(tgl.frame.size, false, 0.0)
    tgl.render(in: UIGraphicsGetCurrentContext()!)
    let backgroundImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    slider.setMaximumTrackImage(backgroundImage?.resizableImage(withCapInsets:.zero),  for: .normal)
    slider.setMinimumTrackImage(backgroundImage?.resizableImage(withCapInsets:.zero),  for: .normal)

    let layerFrame = CGRect(x: 0, y: 0, width: 10.0, height: 30.0)

    let shapeLayer = CAShapeLayer()
    shapeLayer.path = CGPath(rect: layerFrame, transform: nil)
    shapeLayer.fillColor = UIColor.black.cgColor

    let thumb = CALayer.init()
    thumb.frame = layerFrame
    thumb.addSublayer(shapeLayer)

    UIGraphicsBeginImageContextWithOptions(thumb.frame.size, false, 0.0)

    thumb.render(in: UIGraphicsGetCurrentContext()!)
    let thumbImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    slider.setThumbImage(thumbImage, for: .normal)
    slider.setThumbImage(thumbImage, for: .highlighted)
}

【讨论】:

  • 首先我想说谢谢我在这件事情上遇到了很多麻烦,这件事看起来很简单,但实际上并非如此。但现在我想知道 func setSlider(slider: UISlider) 是参数名称是发送者还是我完全错了?^^再次感谢
  • 只需在情节提要中添加一个 UISlider 布局并将其链接到您的视图控制器,然后在您的 viewDidLoad 中将滑块传递给函数。
  • 最后我得到了一个红色的小滑块,请问您遇到了什么问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-28
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多