iOS里动画那种方式效率比较高

发布于 2022-08-24 11:54:52 字数 905 浏览 31 评论 0

我在做一个像Path那种向右滑动,显示出一个导航菜单。
我用过两种方式,一种是

    [UIView beginAnimations:nil context:@"view_animation"];
    [UIView setAnimationDuration:0.3];
    self.view.left = 200.0f; // setLeft 是我自己定义的方法
    [UIView commitAnimations];

另一种:

    self.view.layer.anchorPoint = CGPointZero;
    self.view.layer.frame.left = 200.0f;
    CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    pathAnimation.duration = 0.3f;
    UIBezierPath *path = [UIBezierPath bezierPath];
    [path moveToPoint:CGPointMake(0.0f, 0.0f)];
    [path addLineToPoint:CGPointMake(200.0f, 0.0f)];
    pathAnimation.path = path.CGPath;
    pathAnimation.calculationMode = kCAAnimationLinear;
    [self.view.layer addAnimation:pathAnimation forKey:@"view_animation"];

但是这两种方法,貌似都有一点点卡。而且最近,我更新了网易新闻的客户端,网易新闻的客户端这个操作非常流畅,有可能是怎么实现的呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

救星 2022-08-31 11:54:52

那种动画,你可以参考 GitHub 的很多效果。

https://github.com/Inferis/ViewDeck

这是其中一个:)

内心荒芜 2022-08-31 11:54:52

卡有两种:CPU和GPU的。CPU引起的是不规则的卡顿,GPU引起的是掉帧。

如果是GPU问题,检查view上是不是直接在layer上加了圆角或阴影

最美的太阳 2022-08-31 11:54:52

我考虑,你的这个卡的问题不是动画方式造成的,而是添加动画的内容太多了。
你的self.view 上要添加动画,那么self.view的所有subview也都要跟着动,所以就非常的重。
你可以考虑尝试一下,监听到滑动事件,生成一张self.view的截图,把这张截图贴在上边,让截图动,这样效率会好的很多。

秋风の叶未落 2022-08-31 11:54:52

同意gaosboy,这种动画自己做过,正常情况不会引起卡,应该是你view上画的效果太多了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文