【发布时间】:2021-01-09 09:06:40
【问题描述】:
我正在编写一个简单的应用程序,其中云层向飞机移动。飞机可以在滑块的帮助下移动。由于时间可以通过标签显示,因此飞机的位置总是跳回默认值并滞后。有人好心给我小费吗?我找不到错误:(
问候菲利普
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var slider: UISlider!
@IBOutlet weak var Label2: UILabel!
@IBOutlet weak var airplane: UIImageView!
@IBOutlet weak var cloud1: UIImageView!
let screenWidth = UIScreen.main.bounds.size.width
override func viewDidLoad() {
super.viewDidLoad()
loop()
}
@IBAction func moveSlider(_ sender: UISlider) {
let currentValue :Float = sender.value
airplane.center.x = CGFloat(currentValue) * screenWidth
}
func loop() {
let startDate = Date()
Timer.scheduledTimer(withTimeInterval: 0.05, repeats: true) { (aTimer) in
RunLoop.current.add(aTimer, forMode: .common)
aTimer.tolerance = 0.1
DispatchQueue.main.async {
self.cloud1.frame.origin.y += 1.0
self.Label2.text = String(format: "%.1f", aTimer.fireDate.timeIntervalSince(startDate))
}
}
}
}
演示:https://imgur.com/a/sgK3xXo
这是我的故事板和约束:
【问题讨论】:
-
使用给定的代码可以正常工作。也许是因为约束。你设置了什么约束,你为滑块设置了什么属性?如果可能,请附上带有属性的情节提要。
-
嘿 Raja,感谢您试用我的代码。我现在添加了我的故事板的屏幕截图。
-
无法重现。如果可能,请附上演示项目的 git 链接。