• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - CABasicAnimation 有时有效,有时失败

[复制链接]
菜鸟教程小白 发表于 2022-12-13 16:12:21 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在制作一个应用程序,通过一系列步骤引导用户创建帐户。完成每个步骤后,用户将被带到下一个 View Controller ,并且屏幕顶部会出现一个进度条动画,以传达已完成的帐户创建过程的多少。这是最终结果:

enter image description here

这是通过在包含 View 中放置导航 Controller 来实现的。进度条覆盖在包含 View 上,每次导航 Controller 推送一个新的 View Controller 时,它都会告诉包含 View Controller 将进度条设置为父 View 宽度的某个百分比。这是通过以下 updateProgressBar 函数完成的。



导航 Controller 堆栈中的 View Controller 将在推送下一个 VC 时调用此 updateProgressBar 函数。这样做是这样的:



同理,当按下返回键时,我们收缩容器VC的进度条:



我的问题是这个动画有时只能工作。进度条在进程中向前移动时始终有效,但有时,当用户向后导航时,进度条会卡住并且不会再向任一方向移动,直到出现未到达的 View Controller 。请看下面的视频:

Video of Bug (Bug begins around 0:23)

我已确认警报 Controller 的显示不是动画失败的原因,并且还确保动画正在主线程上发生。有什么建议吗?



Best Answer-推荐答案


正如这个答案中很好解释的 here , viewDidLayoutSubviews() 被多次调用。

在您的情况下,每次您从导航堆栈中推送或弹出 View Controller 时,您最终都会实例化一个新的 CAShapeLayer

尝试改用 viewDidAppear()

关于ios - CABasicAnimation 有时有效,有时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57777822/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap