gpt4 book ai didi

ios - CGAffineTransformMakeTranslation 与 CGRectOffset 动画

转载 作者:行者123 更新时间:2023-12-01 18:48:10 34 4
gpt4 key购买 nike

不确定这是否与我的问题有关,但我有一个动画序列可以移动 UIView使用以下代码超出框架:

[UIView animateWithDuration:0.3 
delay:0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
_popupView.transform = CGAffineTransformMakeTranslation(0, -750);
}
completion:^(BOOL finished) {
_popupView.alpha = 0.0f;
}];

我以前一直在使用这个 代替 以上动画的
                 ....
animations:^{
_popupView.frame = CGRectOffset(_popupView.frame, 0, -750);
}

在执行 CGRectOffset 时,我遇到了一些奇怪的故障错误。无论出于何种原因,但只要我用 CGAffineTransfromMakeTranslation 替换了移动 View 的方法故障似乎已经消失。

我的问题是这样的:
  • 这两种方法之间的最终结果差异是什么(如果有的话)
    动画(“移动”)对象的位置?

  • 有的话可以
    这解释了我遇到 View 闪烁的原因
    动画期间屏幕的底部(几乎就像它在设置
    它的框架到屏幕的底部)。如果这不是很清楚,我有一个单独的帖子更具体地询问这个“故障”,并更深入地解释我的 CGRectOffset Glitch .

    谢谢你的帮助!

    最佳答案

    不同之处在于自动布局需要完全控制 View 的 centerbounds.size ,并将根据安装的约束在任意时间重置它们。

    自动布局非常小心(从 iOS 8.0 开始),甚至避免查看 View 的 transform .您的变换应用在自动布局设置的框架之上,并且自动布局永远不会重置它。

    因此,您可以使用变换或通过更新其约束来为 View 的位置设置动画。试图通过直接设置其框架来为其位置设置动画会导致意外行为。

    关于ios - CGAffineTransformMakeTranslation 与 CGRectOffset 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33305214/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com