我有一个UISlider
,当用户点击某个时间而不是移动拇指时,我试图让位置移动。
我尝试通过this topic和this answer来解决这个问题。这就是我试过的:
var slider: UISlider! // and maxValue, etc added in viewDidLoad
func sliderTapped(gestureRecognizer: UIGestureRecognizer) {
var pointTapped: CGPoint = gestureRecognizer.locationInView(self.view)
var positionOfSlider: CGPoint = slider.frame.origin
var widthOfSlider: CGFloat = slider.frame.size.width
var newValue = ((pointTapped.x - positionOfSlider.x) * CGFloat(slider.maximumValue) / widthOfSlider)
slider.setValue(Float(newValue), animated: true)
}
但是,它不会让我在滑块上的任何地方获得挖掘的值。它只能让我握住拇指并滑动它,但不能轻拍。
答案 0 :(得分:1)
错误是合法的。如果检查Float
的操作数,您将看到几个可能的调用序列。你可能想要的那个期望CGFloat
(而不是animation:
) - 但也需要一个let floatNewValue = Float(newValue)
durationSlider.setValue(floatNewValue,animated: true)
布尔标志。
尝试类似:
{{1}}
答案 1 :(得分:0)
UISlider
的方法是func setValue(_ value: Float, animated animated: Bool)
。
您需要将CGFloat转换为Float。
所以durationSlider.setValue(Float(newValue), animated: true)