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

iOS UIView 动画 CATransform3DMakeRotation 混淆

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

我有一个 UIView 我正在尝试动画向下翻转,同时它的轴位于 View 的底部。例如:

enter image description here

为此,我尝试使用 UIView 动画:

[UIView animateWithDuration:3 delay:0 options:UIViewAnimationCurveEaseOut animations:^{

     // Flip Down
     top3.layer.anchorPoint = CGPointMake(0.5, 1.0);
     top3.layer.transform = CATransform3DMakeRotation(M_PI, 1, 0, 0);

 } completion:^(BOOL finished) {

     // Reset?
     //top3.transform = CGAffineTransformMakeScale(1, 1);

 }];

现在它没有按我想要的方式工作,看起来 View 动画远离用户而不是朝向用户。它似乎没有提供 3D 效果,使其在向下旋转时看起来更接近用户,如我的图像所示。我很肯定这是因为我不了解如何使用 CATransform3DMakeRotation

问题:

  • 如何使 View 在下降时看起来更靠近用户?比如像我的图片示例那样倾斜它?
  • 当我设置我的 anchorPoint 时,它会向下移动我的 View ,我怎样才能防止这种情况并仍然设置我的 anchorPoint
  • 使用 UIView 动画,我可以使用缓动设置吗? 在选项中使用 UIViewAnimationCurveEaseOut
  • 我可以使用重力设置吗?



Best Answer-推荐答案


  • 您的问题并不完全清楚,但听起来您在动画过程中没有看到透视失真 - View 在旋转时保持矩形,对吧?要使 CALayer 以透视方式显示,它的 transform 需要设置 m34 元素,如 here 所述.
  • 为了补偿 anchorPoint 移动 View 层,您需要更改 View 的原始位置。
  • 是的。除了您正在使用的动画选项之外,还有几个动画选项,您可以像这样组合它们(例如): UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction.
  • Core Animation 并没有任何物理概念。根据您想要的效果,您可以通过将多个动画与特定的缓动设置链接在一起来实现它——例如,撞击固体表面的下落物体将在下降过程中使用“缓入”动画,然后是如果它随后反弹,则“缓和”。

关于iOS UIView 动画 CATransform3DMakeRotation 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8494184/

回复

使用道具 举报

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

本版积分规则

关注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