gpt4 book ai didi

cocoa-touch - UIVIew 动画 - 缩放 + 翻译

转载 作者:行者123 更新时间:2023-12-04 02:30:50 27 4
gpt4 key购买 nike

我有一个 View ,我想通过动画将其缩放并转换到新位置。我尝试使用以下代码实现它:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:kDurationForFullScreenAnimation];
[[self animatingView] setFrame:finalRect];
[UIView commitAnimations];

这段代码的效果是, View 首先将其内容的大小更改为 finalRect,然后将其转换为新位置。即缩放部分从不动画。 View 只是转换为新的大小,然后被转换。

这个问题已经在其他几个线程中讨论过,但没有一个得出结论。不过,确实存在一种解决方案,即使用计时器并每次在计时器回调中设置帧,但它存在性能缺陷。

这个问题最合适的解决方案是什么,为什么在第一种情况下会出现这个问题?

谢谢

最佳答案

设置框架既不缩放也不平移。您要么使用了错误的术语,要么使用了错误的工具来完成这项工作。当您希望影响 UIView(而不是使用 Core Animation 转换的层)时,缩放和平移都使用 Core Graphics Affine 转换完成。

缩放 View 使用

// 2x
[rotationView setTransform:CGAffineTransformMakeScale(2.0, 2.0)];

要翻译,请使用
// Move origin by 100 on both axis
[rotationView setTransform:CGAffineTransformMakeTranslation(100.0, 100.0)];

要为这些设置动画,请将它们包装在一个动画块中。如果你想用这两个来转换 View ,那么你需要连接它们。

如果您根本不想要缩放和平移(变换),那么您的意思是您想要更改 View 的边界和位置。这些随着调用而改变
[view setBounds:newRect];
[view setCenter:newCenter];

其中 newRect 和 newCenter 分别是代表屏幕上新位置的 CGRect 和 CGPoint 。同样,这些需要包裹在动画块中。

关于cocoa-touch - UIVIew 动画 - 缩放 + 翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3509494/

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