所以,我正在创建一种进度条,大多数只是一个从0到100%的动画。我有两张图片,一张是底部是红色的,另一张是黑色的。我试图从顶部图像中删除,以创建它从0到100%加载的想法,慢慢显示下面的图像。我已经完成了所有工作,我的问题是我没有看到它们之间。我看到0%和100%,我可以调试它并查看控制器并查看我的视图控制器(自我)更新并慢慢取走顶部图像,所以我知道它正在工作,但我没有看到它通过每个动画。我已经编辑了一个移动的东西大约一吨但没有看到变化。感谢大家提前帮助!
override func viewDidAppear(_ animated: Bool) {
if intCounter <= 100{
UIView.animate(withDuration: 0.05, animations: catScanE.layoutIfNeeded)
repeat {
dblImageH = dblImageH - 3.80
self.catScanE.frame = CGRect(x: 27 , y: 197, width: 320, height: dblImageH)
intCounter = intCounter + 1
} while (intCounter <= 100)
} else {
performSegue(withIdentifier: "lastSegue", sender: nil)
}
}
我已经让动画基本上起作用,它向下滚动屏幕但显示了一种动画。我希望它能慢慢限制约束,但现在这不是问题。由于动画&#34;工作&#34;,我无法在动画后得到它,这就是我所拥有的。添加if intCounter部分使它跳过动画和segue,没有它,屏幕就会执行动画并坐在那里......
override func viewDidAppear(_ animated: Bool) {
UIView.animate(withDuration: 5.0, animations: {
self.dblImageH = self.dblImageH - 3.80
self.catScanE.frame = CGRect(x: 27 , y: 197, width: 320, height: self.dblImageH)
self.intCounter = self.intCounter + 1
if self.intCounter > 100{
self.performSegue(withIdentifier: "lastSegue", sender: nil)}
})
}
我在Ravron和更多StackOverflow搜索的帮助下找到了它。我将内容模式设置为属性中的顶部,并使用此代码使其像进度条一样(这是一个黑色图像,下面有一个红色图像,看起来像是从0到100)。我遇到了一个问题,图像基本上向上或向下移动,这是通过更改y坐标以匹配大小的变化来修复的,因此它基本上保持在相同的位置。我只需要弄清楚如何使计数器在动画时从0变为100。谢谢!希望这可以帮助其他人制作自定义进度条。
override func viewDidAppear(_ animated: Bool) {
UIView.animate(withDuration: 5.0, animations: {
self.catScanE.frame = CGRect(x: 27 , y: 200, width: 320, height: 0)
}, completion: {finished in self.performSegue(withIdentifier: "lastSegue", sender: nil)})
}
答案 0 :(得分:0)
您的animate
块只运行一次,并且视图框架的最终设置都是重要的。视图实际上是从0%到100%的动画,但它发生在50毫秒,或大约三帧。
只需将帧设置为动画块中所需的最终位置,并将持续时间增加到合理的范围,例如100 * 0.05s = 5s
。
稍微扩展:animate
方法非正式地说,“运行下面的块,它会更改各种视图的一个或多个特征。然后,隐式地将这些特征从其当前值动画化为设置时的值。阻止了。“所以它只被调用一次,在其中你应该设置特征到他们想要的最终值。
考虑阅读the animations section of the View Programming Guide for iOS,它全面概述了平台上的动画基础知识,还介绍了UIView基于块的动画,这是您在此处尝试使用的类型。