gpt4 book ai didi

ios - 在 Swift 中更新 View

转载 作者:行者123 更新时间:2023-11-29 02:13:54 29 4
gpt4 key购买 nike

我正在制作一个应用程序,通过从数组中读取 CGPoint 并相应地设置图像的中心,以编程方式在屏幕上移动图像。最简单的形式是这样的:

for point in array {
image.center = point
sleep(1)
}

它发生在按下按钮之后,因此 for 循环位于按钮的 @IBAction func ... 内。

问题是屏幕不会在 image.center 更改后更新,而是在整个 for 循环完成后才更新,所以当图像位于数组的最后一个点时。如何强制更新 View ?或者一般来说处理这个问题的最佳方法是什么?

最佳答案

我会使用关键帧动画。让我们假设这是你的观点:

let val: [CGPoint] = [CGPoint(x:10, y:20), CGPoint(x:100, y:80), CGPoint(x:200, y:80), CGPoint(x:200, y:400), CGPoint(x:30, y:400), CGPoint(x:30, y:100)]

按下按钮后调用动画:

       let duration = NSTimeInterval(2)

UIView.animateKeyframesWithDuration(duration, delay: 0.0, options: nil, animations: {

self.myView.center = CGPoint(x: 10, y: 20)

for (index, point) in enumerate(self.val) {
UIView.addKeyframeWithRelativeStartTime(Double(index) * 1.0 / Double(self.val.count), relativeDuration: 1.0 / Double(self.val.count), animations: {
self.myView.center = point
})
}
}, completion: nil)

当然你可以自定义你的动画持续时间,延迟等等。只记得在

UIView.addKeyframeWithRelativeStartTime relativeDuration...

有相对值,例如持续时间应该在 0-1 之间,其中 1 是您在

中指定的总持续时间
UIView.animateKeyframesWithDuration...

关于ios - 在 Swift 中更新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28968158/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com