转到 UISlider 的点击位置
Go to tapped position of UISlider
我有一个 UISlider
,我试图在用户点击到特定时间时移动位置,而不是移动拇指。
我试图通过 this topic and 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)
}
但是,它不允许我在滑块上的任何位置获取点击值。它只能让我握住拇指并滑动它,但不能敲击。
UISlider
的方法是func setValue(_ value: Float, animated animated: Bool)
。
您需要将 CGFloat 转换为 Float。
所以durationSlider.setValue(Float(newValue), animated: true)
嗯,这个错误是合法的。如果检查 setValue
的操作数,您会看到几种可能的调用序列。您可能想要的那个需要一个 Float
(而不是 CGFloat
)——但还需要一个 animation:
布尔标志。
试试这样的:
let floatNewValue = Float(newValue)
durationSlider.setValue(floatNewValue,animated: true)
我有一个 UISlider
,我试图在用户点击到特定时间时移动位置,而不是移动拇指。
我试图通过 this topic and 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)
}
但是,它不允许我在滑块上的任何位置获取点击值。它只能让我握住拇指并滑动它,但不能敲击。
UISlider
的方法是func setValue(_ value: Float, animated animated: Bool)
。
您需要将 CGFloat 转换为 Float。
所以durationSlider.setValue(Float(newValue), animated: true)
嗯,这个错误是合法的。如果检查 setValue
的操作数,您会看到几种可能的调用序列。您可能想要的那个需要一个 Float
(而不是 CGFloat
)——但还需要一个 animation:
布尔标志。
试试这样的:
let floatNewValue = Float(newValue)
durationSlider.setValue(floatNewValue,animated: true)