Как я могу перемещать (переводить) картинку произвольно, на любую позицию экрана? - PullRequest
0 голосов
/ 30 сентября 2019

Я хочу перевести изображение в любую позицию на экране? что я должен делать?

Я хочу создать проект, в котором пользователь попросил поместить изображение в любое место на экране, и через 3 секунды он должен был переместиться в любое место, теперь пользователь изменил требование случайной анимации изображения на экране.

class ViewController: UIViewController {
    var timer = Timer()
    var imageView: UIImageView!
    let imageViewWidth = CGFloat(100)
    let imageViewHeight = CGFloat(100)



    override func viewDidLoad() {
        super.viewDidLoad()

        SchedulingMethod()

    }

    func SchedulingMethod() {
        timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(updatePosition), userInfo: nil, repeats: true)
    }
    @objc func updatePosition() {

        let maxX = view.frame.maxX-imageViewWidth
        let maxY = view.frame.maxY-imageViewHeight
        let randomX = arc4random_uniform(UInt32(maxX)) + 0
        let randomY = arc4random_uniform(UInt32(maxY)) + 0

        print("chutiyaap")
        imageView = UIImageView(frame: CGRect(x: CGFloat(randomX), y: CGFloat(randomY), width: 200, height: 200))
        imageView.image = UIImage(named: "loading")
        imageView.contentMode = .scaleAspectFit
        for view in self.view.subviews {
            view.removeFromSuperview()
        }

        self.view.addSubview(imageView)
    }

изображение должно переводиться случайным образом, на самом деле я хочу, чтобы это изображение перемещалось случайным образом на экране.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Лично я думаю, что CGAffineTransform - это то, что нужно.

@objc func updatePosition() {
    let maxX = view.frame.maxX - imageViewWidth
    let maxY = view.frame.maxY - imageViewHeight
    let xCoord = CGFloat.random(in: 0...maxX)
    let yCoord = CGFloat.random(in: 0...maxY)

    UIView.animate(withDuration: 0.3) {
        imageView.transform = CGAffineTransform(translationX: xCoord, y: yCoord)
    }
}

Это даст вам хорошую гибкость, если вам нужно будет выполнить любые другие преобразования в представлении изображения.

Выезд: Взлом со Swifts учебник

0 голосов
/ 30 сентября 2019

Так что вы должны использовать UIView.animate. Вы можете изменить продолжительность анимации.

например

      var imageView: UIImageView!

      override func viewDidLoad() {
            super.viewDidLoad()
            imageView = UIImageView(frame: CGRect(x: CGFloat(randomX), y: CGFloat(randomY), width: 200, height: 200))
            imageView.image = UIImage(named: "loading")
            imageView.contentMode = .scaleAspectFit
            self.view.addSubview(imageView)
            SchedulingMethod()
    }


  @objc func updatePosition() {

        let maxX = view.frame.maxX-imageViewWidth
        let maxY = view.frame.maxY-imageViewHeight
        let randomX = arc4random_uniform(UInt32(maxX)) + 0
        let randomY = arc4random_uniform(UInt32(maxY)) + 0

        UIView.animate(withDuration: 0.4) {
                self.imageView.frame.origin.x = randomX;
                self.imageView.frame.origin.y = randomY;
            }
    }
...