在我的代码中,有一段时间它增加了很多,有一段时间让图像位置增加和减少了。
IBOutlet weak var bgImage: UIImageView!
IBOutlet weak var sliders: UISlider!
IBOutlet weak var imgViews: UIImageView!
var location = CGPoint(x: 0, y: 0)
var valueOFButterFly = 54.5
var lastValueOfSlider = Float()
@IBAction func sliderValue(_ sender: UISlider) {
print(sender.value)
if lastValueOfSlider >= sender.value {
valueOFButterFly = valueOFButterFly - 1
print("new value \(valueOFButterFly)")
imgViews.center = CGPoint(x: valueOFButterFly, y: 81.5)
}
else if (lastValueOfSlider < sender.value) {
valueOFButterFly = valueOFButterFly + 1
print("new value \(valueOFButterFly)")
imgViews.center = CGPoint(x: valueOFButterFly, y: 81.5)
}
else {
print("else if")
}
self.lastValueOfSlider = sender.value
}
答案 0 :(得分:1)
如果要将imageView's centre
与slider value
进行匹配,则需要将slider's currentValue
设置为imageView's centre
而不是incrementing or decrementing by 1
。 / p>
还要在imageView.center
valueOFButterFly's
中更新didSet property observer
,而不要在整个代码中多次更新。
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var slider: UISlider!
var lastValueOfSlider = Float()
var valueOFButterFly = 54.5 {
didSet {
imageView.center = CGPoint(x: self.valueOFButterFly, y: 81.5)
}
}
override func viewDidLoad() {
super.viewDidLoad()
slider.minimumValue = 0
slider.maximumValue = Float(UIScreen.main.bounds.width)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
imageView.center = CGPoint(x: self.valueOFButterFly, y: 81.5)
}
@IBAction func sliderValue(_ sender: UISlider) {
print(sender.value)
valueOFButterFly = Double(sender.value)
self.lastValueOfSlider = sender.value
}
}
在上面的代码中,我使用了
slider.minimumValue = 0
slider.maximumValue = Float(UIScreen.main.bounds.width)
您可以根据需要配置以上属性。