Swift语言中手写代码执行动画效果

Swift语言中手写代码执行动画效果,第1张

概述自动布局的页面在执行动画效果时需要注意: 1).需要在viewDidAppear方法中执行动画的效果的代码。不要在viewDidLoad中执行动画 控制器的生命周期:loadView-->viewDidLoad-->willSublayout-->DidSublayout-->viewWillAppear-->viewDidAppear--—>viewWIllDisappear—>viewDidD

自动布局的页面在执行动画效果时需要注意:@H_419_3@

1).需要在vIEwDIDAppear方法中执行动画的效果的代码。不要在vIEwDIDLoad中执行动画
控制器的生命周期:loadVIEw-->vIEwDIDLoad-->willSublayout-->DIDSublayout-->vIEwWillAppear-->vIEwDIDAppear--—>vIEwWIlldisappear—>vIEwDIDdisappear

>vIEwDIDAppear
//
界面已经出现的时候会自动调用@H_419_3@

//这个方法是页面显示之后的生命周期方法 在这个方法中所有的子视图的位置 已经设置完毕@H_419_3@

2).在自动布局的页面 不能够直接修改frame 来改变视图的位置 -> 自动布局的页面视图是有 frame@H_419_3@

2.1.自动布局的页面的子视图的frame 是在 vIEwDIDlayoutSubVIEws 方法中 确定的视图的frame@H_419_3@

注意:自动布局的页面在使用动画效果的时候 不能够直接修改frame 需要更新约束才行@H_419_3@

3).自动布局系统的会在 vIEwWillLayoutSubVIEws生命周期方法之前 '收集' 约束@H_419_3@

4).如果希望更新的约束能够提前展示动画效果的运动轨迹,需要在更新完约束之后 强制刷新动画,提前布局页面@H_419_3@

5).要获取动画效果 必须将 提前刷新的方法layoutIfNeeded@H_419_3@

,放在动画闭包中执行@H_419_3@

6.> 自动布局更新约束 snp_updateXXX: 如果相同的约束存在就更新 约束不存在就直接创建约束@H_419_3@

private func startAnimation() {@H_419_3@


let OffsetY = -ScreenH + 180
//1.在动画闭包中 更新约束 snp_updateConstraints: 如果该约束已经存在就更新约束,如果不存在就创建约束
//usingSpringWithdamPing: d簧系数 0 ~ 1 越小越d//initialSpringVeLocity: 加速度 9.8 重力加速度如果希望d簧动画效果比较好一般设置范围 * 10 ~= //options: 动画的可选项枚举 OC: 位移枚举 '|',swift使用数组表示多个枚举选项

UIVIEw .animateWithDuration(1.5,delay: 0,usingSpringWithdamPing: 0.98,initialSpringVeLocity: 9.8,options: [],animations: { () -> VoID in


//explicit 明确的在闭包中使用 capture 获取 semantics 语义的. ---》要使用self
self.iconImageVIEw.snp_makeConstraints { (make) -> in

//自动布局系统在这个阶段并没有修改视图的frame 这个阶段只是收集了约束的变化
make.bottom.equalTo(vIEw.snp_bottom).offset(OffsetY)
}
强制刷新页面 layoutIfNeeded
layoutIfNeeded()

}) { (
_) -> in
print("ok")
}
@H_419_3@

}@H_419_3@ 总结

以上是内存溢出为你收集整理的Swift语言中手写代码执行动画效果全部内容,希望文章能够帮你解决Swift语言中手写代码执行动画效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1078586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存