簡體   English   中英

如何隨機移動(翻譯)圖片,屏幕的任何 position?

[英]How can I move(translate) picture randomly, any position of the screen?

我想將圖像轉換為屏幕中的任何 position? 我應該怎么辦?

我想做一個項目,用戶要求將圖像放在屏幕上的任何位置,並且應該在 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)
    }

圖片應該隨機翻譯,實際上我希望這張圖片在屏幕上隨機移動。

所以你必須使用 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;
            }
    }

我個人認為 CGAffineTransform 是通往 go 的方式。

@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 進行黑客攻擊教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM