gpt4 book ai didi

iphone - 动画期间 UIView 缩放

转载 作者:行者123 更新时间:2023-12-03 18:40:39 24 4
gpt4 key购买 nike

我有一个自定义 UIView 来显示平铺图像。

    - (void)drawRect:(CGRect)rect
{
...
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClipToRect(context,
CGRectMake(0.0, 0.0, rect.size.width, rect.size.height));
CGContextDrawTiledImage(context, imageRect, imageRef);
...
}

现在我正在尝试以动画方式调整该 View 的大小。

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];

// change frame of view

[UIView commitAnimations];

我期望平铺区域能够增长,保持平铺尺寸不变。相反,当区域增长时, View 的原始内容会缩放到新的大小。至少在动画期间是这样。所以动画的开头和结尾都很好。在动画过程中,图 block 会变形。

CA 为什么要尝试扩展?我怎样才能阻止它这样做?我错过了什么?

最佳答案

如果 Core Animation 必须为每个动画帧回调代码,那么速度永远不会那么快,并且自定义属性的动画一直是 Mac 上 CA 的一项长期要求的功能和常见问题解答。

使用 UIViewContentModeRedraw 是正确的选择,也是您从 CA 获得的最佳选择。问题是从 UIKit 的角度来看,框架只有两个值:过渡开始时的值和过渡结束时的值,这就是您所看到的。如果您查看核心动画架构文档,您将看到 CA 如何拥有所有图层属性及其随时间变化的值的私有(private)表示。这就是帧插值发生的地方,并且您无法在发生更改时收到通知。

因此,唯一的方法是使用 NSTimer (或 performSelector:withObject:afterDelay:)随着时间的推移更改 View 框架,这是老式的方法。

关于iphone - 动画期间 UIView 缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/818207/

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