Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 动画宽度持续时间内旋转的当前值_Iphone_Uiviewanimation - Fatal编程技术网

Iphone 动画宽度持续时间内旋转的当前值

Iphone 动画宽度持续时间内旋转的当前值,iphone,uiviewanimation,Iphone,Uiviewanimation,我正在使用animateWithDuration使我的一个UIVIew无休止地旋转。现在,我需要获取UIView在特定时间的旋转的当前值。 我已尝试使用以下函数: -(float)getCurrentRotation{ CGAffineTransform transform = ((UIImageView*)[self.subviews objectAtIndex:0]).transform; return (atan2(transform.b, transform.a)); } 但它总是返回

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

-(float)getCurrentRotation{
CGAffineTransform transform = ((UIImageView*)[self.subviews objectAtIndex:0]).transform;
return (atan2(transform.b, transform.a));
}
但它总是返回与我在最初调用animateWithDuration时指定的值相同的值(M_PI/2):

[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.layer.presentationLayer
访问该层

因此,以下行将在您请求时获得实际转换:

CGAffineTransform transform = CATransform3DGetAffineTransform([(CALayer*)[[[self.subviews objectAtIndex:0] layer] presentationLayer] transform]);
您必须链接并包括
QuartzCore
框架,该框架定义了
CALayer
,才能起作用

#import <QuartzCore/QuartzCore.h>
#导入
#import <QuartzCore/QuartzCore.h>