1
我的屏幕上有一個可以拖放的圖像。這已經起作用了。當我把手指放在中間時。 就像我把手指放在任何角落(或其他不是中間的東西)一樣,圖像的中間位於我的手指下。但我仍然想要擁有這個角落。如何用swift精確拖放圖像?
這裏是我的代碼:
let frameDoor = CGRect(x: 100, y: 100, width: 200, height: 400)
var doorView = ObjectView(frame: frameDoor)
doorView.image = UIImage(named: "door")
doorView.contentMode = .scaleAspectFit
doorView.isUserInteractionEnabled = true
self.view.addSubview(doorView)
的ObjectView:
import UIKit
class ObjectView: UIImageView {
override init(frame: CGRect) {
super.init(frame: frame)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
var touch = touches.first
self.center = (touch?.location(in: self.superview))!
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
對此有任何解決方案?
謝謝!我試過了,但現在這個圖像已經不在我的手指之下了。也許我可以修復它... –
@chocolatecake,我編輯了答案。現在''initialLocation'的計算是正確的。當觸摸結束或取消時,不要忘記重置它。 –
是的,現在它工作!我只是通過添加包含對象初始位置的輔助'initialLocation'來修復它。我計算了這樣的新位置: 'let xPos =((touch?.location(in:self.superview))?. x)! - initialLocationFinger!.x;讓yPos =((touch?.location(in:self.superview))?。y)! - initialLocationFinger!.y; self.center = CGPoint(x:initialLocationObject!.x + xPos,y:initialLocationObject!.y + yPos);' 但我認爲你的解決方案更聰明;) –