滑动幻灯片并移动imageView位置

时间:2019-05-28 11:04:57

标签: ios swift

在我的代码中,有一段时间它增加了很多,有一段时间让图像位置增加和减少了。

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
}

1 个答案:

答案 0 :(得分:1)

如果要将imageView's centreslider 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
    }
}

在上面的代码中,我使用了

  1. slider.minimumValue = 0
  2. slider.maximumValue = Float(UIScreen.main.bounds.width)

您可以根据需要配置以上属性。