Ios 使用更改的约束(进度条)设置imageView的动画

Ios 使用更改的约束(进度条)设置imageView的动画,ios,swift,constraints,uiviewanimation,Ios,Swift,Constraints,Uiviewanimation,所以,我正在创建一种进度条,主要是一个从0%到100%的动画。我有两张图片,一张底部是红色,一张顶部是黑色。我试着从上面的图片中去掉,创建一个从0到100%加载的想法,慢慢地显示下面的图片。我有所有这些工作,我的问题是,我看不到之间的差距。我看到0%和100%,我可以调试它并查看控制器,看到我的视图控制器(自我)更新并慢慢删除顶部图像,这样我知道它正在工作,但我看不到它通过每个动画。我编辑了一个移动了一吨东西,但没有看到变化。提前谢谢大家的帮助 override func viewDidAppe

所以,我正在创建一种进度条,主要是一个从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)
    }
}
我在Ravron和更多StackOverflow搜索的帮助下找到了答案。我在属性中将内容模式设置为top,并使用此代码使其看起来像一个进度条(这是一个黑色图像,下面有一个红色图像,看起来从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)})
}

animate
块只运行一次,视图帧的最终设置才是最重要的。该视图实际上正在按照您的意愿从0%设置动画到100%,但它会在50毫秒或大约三帧内发生

只需将帧设置为动画块中所需的最终位置,并将持续时间增加到合理的程度,如
100*0.05s=5s

稍微展开:
animate
方法非正式地说,“运行下面的块,它会更改各种视图的一个或多个特征。然后,隐式地将这些特征从其当前值设置为运行块时设置的值。”因此只调用一次,并且在其中您应该将特征设置为所需的最终值


请考虑阅读本文,其中全面概述了平台上的动画基础知识,还介绍了基于UIView块的动画,即您在此处尝试使用的类型

因此,如果我理解正确,我需要删除repeat/while,将图像视图约束设置为最终所需的值,即0高度。动画师会补上剩下的?是的。并将持续时间设置为合理的时间。在使用该方法时,也要阅读该方法的文档。:)你有没有可能让我知道关于文件的正确方向?我改变了周围的事情,但仍然以0-100结束。。。开始寻找文档,最后发现很多与iOS 10无关的文档,找到一个与iOS 4有关的文档。。。。仅供参考,我是Swift方面的新手,基本上是入门级程序员,所以我知道很多事情,但很容易迷路。。对不起,谢谢!你的答案是有道理的,我只是不知道如何将其解释到代码中,尤其是在涉及swift时。?我已经在答案中添加了一个指向文档的链接。最近,我有机会重新获得此答案,但无法使其正常工作。它似乎再次工作,但它不会每次更新,我仍然看到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)})
}