gpt4 book ai didi

iphone - animateWithDuration 期间旋转的当前值

转载 作者:行者123 更新时间:2023-12-03 21:03:16 26 4
gpt4 key购买 nike

我正在使用 animateWithDuration 让我的 UIVIew 之一无休止地旋转。现在,我需要获取 UIView 在特定时间旋转的当前值。我尝试使用以下功能:

-(float)getCurrentRotation{
CGAffineTransform transform = ((UIImageView*)[self.subviews objectAtIndex:0]).transform;
return (atan2(transform.b, transform.a));
}

但它总是返回相同的值 (M_PI/2),因为它是我在初次调用 animateWithDuration 时指定的值:

[UIView animateWithDuration:4 delay:0 options:( UIViewAnimationOptionRepeat|UIViewAnimationOptionCurveLinear) animations:^{
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2);
((UIImageView*)[self.subviews objectAtIndex:0]).transform = transform;
}
completion:^(BOOL finished){
}];

有没有办法获得当前的旋转值?

谢谢。

最佳答案

当使用基于 CoreAnimation 的动画时,您的 View 属性(边界、变换...)实际上永远不会改变。发生变化的是动画时屏幕上显示的图层的属性(请参阅 this documentation page ),可以使用 view.layer.presentationLayer 访问该属性。

因此,下面的行将在您要求时为您提供实际的转换:

CGAffineTransform transform = CATransform3DGetAffineTransform([(CALayer*)[[[self.subviews objectAtIndex:0] layer] presentationLayer] transform]);

您必须链接并包含定义 CALayerQuartzCore 框架才能使其正常工作。

#import <QuartzCore/QuartzCore.h>

关于iphone - animateWithDuration 期间旋转的当前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12107614/

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