在UIView动画期间,layer.presentationLayer帧未返回正确的显示帧

时间:2014-06-18 15:14:16

标签: objective-c animation uiview

我一直试图抓住UIView动画期间显示的对象框架。原因是,我有几个UI元素,我想更新的东西取决于他们在屏幕上的位置。

我知道一旦动画被触发,视图的frame属性就会返回其目标帧,所以我一直在尝试获取其表示层的帧。例如,视图包含一个名为handle的子视图。该视图使用以下命令从当前位置设置handle动画:

[UIView animateWithDuration: 1 animations:^{
    self.handle.frame = CGRectMake(100, 100, 100, 100)
}];

handle有一个计时器,使用以下方式报告其当前帧:

NSLog(@"frame: %@", [NSValue valueWithCGRect:[self.layer.presentationLayer frame]]);

我尝试过获取presentationLayer框架的变体,包括:

((CALayer *)self.layer.presentationLayer).frame

我尝试在外部视图中使用计时器报告handle

的帧
[self.handle.layer.presentationLayer frame]

我尝试使用[UIView animateWithDuration...上的不同变体制作动画。我通过设置CABasicAnimation[UIView beginAnimations ... commitAnimations]来尝试设置动画。

我试过iPad2,iPad Mini和模拟器,都有同样的问题。

在所有情况下,它都报告了源源不断的相同CGRects。动画总是在没有任何其他问题的情况下发生。我已经在superview和handle上导入了Quartz。

我觉得我已经筋疲力尽了很多关于这个主题的帖子等等。我觉得所有这一切都应该有效,而其他人似乎已经成功了,所以可能会妨碍这项工作?

任何指针都将不胜感激。

感谢。

0 个答案:

没有答案