有没有办法从未完成的UIView动画中获得位置(或中心)状态?

Mar*_*ero 4 iphone animation cocoa-touch objective-c uiview

我有一个UIView做一个简单的动画.它将y位置从100调整到130然后反转.我希望它继续重复,所以我将重复计数器设置为999.在用户输入时,我想采用相同的UIView并调整x位置.这是通过另一个UIView动画完成的.问题是,当第二个动画开始时,第一个动画(在y方向从100到130)刚刚突然结束(因为我读到它应该).有没有办法在UIView结束之前获得该UIView的y坐标的最终位置?理想情况下,我希望UIView保持在我翻译x坐标时所处的y位置.

摘要:UIView在y方向上从100-130移动,反转并重复直到收到用户输入.收到后,动画缩短,UIView跳到y = 130.我想找到一种方法来找出动画被缩短之前的最终y值是什么,所以当使用带有x平移的新动画时,UIView不会跳到130,但保持与第1个时相同的位置动画结束了.

我似乎无法看到任何可以让你这样做的东西.在我看来,一旦你使用UIView设置动画,那么它(以及所有当前的状态变化)都不在您的手中,只有在完成动画并且在指定时才会"返回"您的控件和可用性终点.它是否正确?任何见解将不胜感激.感谢您的时间.

Dar*_*ren 9

您正在寻找"表示层".

每个UIView都使用Core Animation层渲染,可以从UIView的layer属性访问.

CALayer有一个presentationLayer方法,它返回一个CALayer,表示"与当前显示的图层版本非常接近".

因此,要获取视图的当前位置:

CGRect currentViewFrame = [[myView.layer presentationLayer] frame];
Run Code Online (Sandbox Code Playgroud)