У меня есть изображение на экране, которое можно перетаскивать. Это уже работает. Когда я положил палец посередине. Так же, как я поместил палец в любой угол (или что-то еще, что не посередине), середина изображения попадает под мой палец. Но я все еще хочу иметь угол.Как перетаскивать изображения с быстрым точно?
Вот мой код:
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; let yPos = ((touch? .location (in: self.superview)) ?. y)! - initialLocationFinger! .y; self.center = CGPoint (x: initialLocationObject! .x + xPos, y: initialLocationObject! .y + yPos); ' Но я думаю, что ваше решение умнее;) –