gpt4 book ai didi

ios - 如何使用步进 slider 在 slider 拇指上添加 UILabel?

转载 作者:搜寻专家 更新时间:2023-11-01 05:55:07 24 4
gpt4 key购买 nike

我有一个包含 5 个部分的 slider ,我想跨过这些部分!我这样做了:

@IBAction func changeCostSlider(_ sender: UISlider) {
sender.value = roundf(costSlider.value)
}

我还想在 slider 的拇指上添加一个标签,我尝试将这段代码添加到上面的代码中:

let trackRect: CGRect  = costSlider.trackRect(forBounds: costSlider.bounds)
let thumbRect: CGRect = costSlider.thumbRect(forBounds: costSlider.bounds , trackRect: trackRect, value: costSlider.value)
let x = thumbRect.origin.x + costSlider.frame.origin.x
let y = costSlider.frame.origin.y - 20
sliderLabel.center = CGPoint(x: x, y: y)

但是当我移动 slider 时,我的标签会从我在 Storyboard 中放置标签的位置跳转,并且有一些滞后!有人对如何将此标签添加到我的步进 slider 并正常工作有任何建议吗?!

我认为我的问题是我将我的 UILable 固定在 Storyboard中,当我在 slider 中移动拇指时,一毫秒后,它又回到了固定位置!我该如何解决?!

我尝试以编程方式添加我的 UILabel,但直到我触摸拇指时它才起作用!它是如何完成的:

var sliderLableP = UILabel()
@IBAction func changeCostSlider(_ sender: UISlider) {
sender.value = roundf(costSlider.value)
print(costSlider.value)
let trackRect: CGRect = costSlider.trackRect(forBounds: costSlider.bounds)
let thumbRect: CGRect = costSlider.thumbRect(forBounds: costSlider.bounds , trackRect: trackRect, value: costSlider.value)
let x = thumbRect.origin.x + costSlider.frame.origin.x
let y = costSlider.frame.origin.y - 20
sliderLableP.center = CGPoint(x: x, y: y)
}

在我的 viewDidLoad 中添加了这个:

sliderLableP = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
let trackRect: CGRect = costSlider.trackRect(forBounds: costSlider.bounds)
let thumbRect: CGRect = costSlider.thumbRect(forBounds: costSlider.bounds , trackRect: trackRect, value: costSlider.value)
let x = thumbRect.origin.x + costSlider.frame.origin.x
let y = costSlider.frame.origin.y - 20
sliderLableP.center = CGPoint(x: x, y: y)
sliderLableP.textAlignment = NSTextAlignment.center
sliderLableP.textColor = UIColor.blue
self.containerView.addSubview(sliderLableP)
containerView.bringSubview(toFront: sliderLableP)

最佳答案

这个解决方案适合我:

@IBAction func changeCostSlider(_ sender: UISlider) {
sender.value = roundf(sender.value)

let trackRect = sender.trackRect(forBounds: sender.frame)
let thumbRect = sender.thumbRect(forBounds: sender.bounds, trackRect: trackRect, value: sender.value)
self.sliderLabel.center = CGPoint(x: thumbRect.midX, y: self.sliderLabel.center.y)
}

关于ios - 如何使用步进 slider 在 slider 拇指上添加 UILabel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50433300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com