加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift 使用约束 添加UIView动画

发布时间:2020-12-14 06:24:59 所属栏目:百科 来源:网络整理
导读:最近在使用Swift编写程序时 使用UIView动画 对约束执行动画遇到了一个小坑 1.在控制器中添加一个 容器view,容器view的约束是宽高都是300/ 水平居中/ 竖直居中 2. 在容器view中添加一个imageView,imageView的约束是:和容器view等宽等高 / 水平居中 /顶部对齐

最近在使用Swift编写程序时 使用UIView动画 对约束执行动画遇到了一个小坑

1.在控制器中添加一个 容器view,容器view的约束是宽高都是300/ 水平居中/ 竖直居中

2. 在容器view中添加一个imageView,imageView的约束是:和容器view等宽等高 / 水平居中 /顶部对齐

着这里希望通过修改imageView的顶部约束来执行动画

private func startAnimation(){  
      
        self.imageViewCons.constant = -self.contentViewCons.constant;  
        self.imageView.layoutIfNeeded();  
          
        UIView.animateWithDuration(2.0,animations: { () -> Void in  
            self.imageViewCons.constant = self.contentViewCons.constant;  
            UIView.setAnimationRepeatCount(MAXFLOAT);  
            self.imageView.layoutIfNeeded();  
              
            }) { (_) -> Void in  
                  
        };  
    }

结果是直接停止在最终状态.

因为在使用约束添加动画的时候,有个原则就是动画要添加到当前视图的父视图上

所以我们需要修改更新约束的对象为父视图

private func startAnimation(){  
          
        self.imageViewCons.constant = -self.contentViewCons.constant;  
        self.contentView.layoutIfNeeded();  
          
        UIView.animateWithDuration(2.0,animations: { () -> Void in  
            self.imageViewCons.constant = self.contentViewCons.constant;  
            UIView.setAnimationRepeatCount(MAXFLOAT);  
            self.contentView.layoutIfNeeded();  
              
            }) { (_) -> Void in  
                  
        };  
    }

这样动画既可以正常执行了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读