我只想仅移动左右移动图像



我想用触摸移动这艘船图像。它只需要向左和向右移动,而不是上下移动。问题是在此基本代码设置中,图像都在四处移动。

我有以下代码

import UIKit
class ViewController: UIViewController {
var boat:UIImageView!
var stone:UIImageView!
@IBOutlet weak var myView: UIView!
var location = CGPoint(x: 0, y: 0)
func start() {
boat = UIImageView(image: UIImage(named: "boat"))
boat.frame = CGRect(x: 0, y: 0, width: 60, height: 90)
boat.frame.origin.y = self.view.bounds.height - boat.frame.size.height - 10
boat.center.x = self.view.bounds.midX
self.view.addSubview(boat)
}
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    start()
    movingStone()
    intersectsAt()

}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch : UITouch = touches.first as UITouch!
    location = touch.location(in: self.view)
    boat.center = location

}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch : UITouch = touches.first as UITouch!
       location = touch.location(in: self.view)
    boat.center = location
}
func movingStone() {

    stone = UIImageView(image: UIImage(named: "stones.png"))
    stone.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
    var stone2 = 10 + arc4random() % 20
    stone.bounds = CGRect(x:10, y:10, width:40.0, height:40.0)
    stone.contentMode = .center;
    stone.layer.position = CGPoint(x: Int(stone2), y: 10)
    stone.transform = CGAffineTransform(rotationAngle: 3.142)

    self.view.insertSubview(stone, aboveSubview: myView)

    UIView.animate(withDuration: 5, delay: 0, options: UIViewAnimationOptions.curveLinear, animations: { () -> Void in
        self.stone.frame.origin.y = self.view.bounds.height + self.stone.frame.height + 10
    }) { (success:Bool) -> Void in
        self.stone.removeFromSuperview()
        self.movingStone()
    }

}
func intersectsAt() {

  if(boat.layer.presentation()?.frame.intersects
((stone.layer.presentation()?.frame)!))! {
            boat.image = UIImage(named: "wreckboat.png")
        }
    }
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

您只需要更新图像的x坐标而不是y坐标。

尝试以下操作:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch : UITouch = touches.first as UITouch!
    let loc_tmp = touch.location(in: self.view)
    // only use the x coordinate of the touch location
    location = CGPoint(x: loc_tmp.x, y: boat.center.y)
    boat.center = location

}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch : UITouch = touches.first as UITouch!
    let loc_tmp = touch.location(in: self.view)
    // only use the x coordinate of the touch location
    location = CGPoint(x: loc_tmp.x, y: boat.center.y)
    boat.center = location
}

最新更新