![](/img/trans.png)
[英]How can I make a CGRect move randomly around the screen so long as the user is touching it?
[英]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.