动画时如何在视图中获取 UIImageView 的真实位置?

Posted

技术标签:

【中文标题】动画时如何在视图中获取 UIImageView 的真实位置?【英文标题】:How to get UIImageView real location in view while animation? 【发布时间】:2011-10-24 00:09:33 【问题描述】:

大家好,

对于我使用的动画:[UIView commitAnimation:@"anim" context:nil]; [UIView setAnumatioDuration:10]; imageView.center=CGPointMake(100,100); [UIView 提交动画]; 问题是,当我每 0.5 秒使用计时器调用一次时:CGRect rect=[[imageview.layer presentationLayer]frame]; CGPoint 点=rect.origin; NSLog(@"x:%f,y:%f",origin.x,origin.y); 我将永远得到 x:100,y:100而我想要得到的是视图上的真实位置 而图像视图 标题 到 (100,100) 10 倍很多

【问题讨论】:

Benny,首先,FAQ 中不允许签名。此外,您不需要用 html 编写问题。 *** 允许您使用 Markdown 格式,因此您可以只写纯文本。 ;) 【参考方案1】:

动画在视图的表示层上更新。您可以通过查看该层来检索表示动画期间图像视图当前状态的值。

CGPoint center = [[imageView.layer presentationLayer] center];

【讨论】:

这看起来与他所做的基本相同,只是他试图从框架属性而不是中心获取原点。但它应该是一样的,不是吗? 不,对象框上的属性会立即设置到它们的最终位置,但是表示层会将属性从原来的位置转换到新位置,因此您可以随时查询该层并在动画期间获取当前位置,使用对象层不提供此功能。 但是他用的是presentation frame,他是这样写的:CGRect rect=[[imageview.layer presentationLayer]frame]; 不要忘记添加 QuartzCore.framework 并在您的代码中包含“QuartzCore/QuartzCore.h”。

以上是关于动画时如何在视图中获取 UIImageView 的真实位置?的主要内容,如果未能解决你的问题,请参考以下文章

自动旋转和 UIImageView 动画的问题

如何简单地为 UIimageView 设置动画?

带有 UIImageView 子视图的 UIButton 以显示动画图像

Swift - 动画 UIImageView 图像

动画 UIImageView 运动,然后使用 CGRectIntersection

如何使 UIView 不出现在背景上但仍出现在 UIImageView (子视图)上