我一直试图抓住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。
我觉得我已经筋疲力尽了很多关于这个主题的帖子等等。我觉得所有这一切都应该有效,而其他人似乎已经成功了,所以可能会妨碍这项工作?
任何指针都将不胜感激。
感谢。