您的位置:首页 > 编程语言

一小段Core Animation代码:在View移动过程中获取其

2009-06-11 18:29 295 查看
在我们使用Core Animation的过程中,可能会遇到一个问题,就是我们可以用简单的代码使一个view进行动画的移动,但是如何在view移动的过程中获取它的位置呢?下文将帮你解答这个问题。

原文作者
Dustin Bachrach

原文地址:
http://dbachrach.com/blog/2008/04/07/instantaneous-frame-of-moving-core-animation-views/

昨天有一个问题愁坏我了,所以特意贴上这段代码进行说明。我做了一个支持Core Animation的View(在一个Cocoa Touch项目里。不过对普通的Cocoa来说也是一样)。当我用下面的代码在一个动画context中设置它的边框的时候,这个View是会进行动画移动的。


UIView *v; // instantiated elsewhere


CGRect r = v.frame;


r.origin.y += 100;


v.frame = r;


这段代码应该没什么问题,仅仅是把UIView从原来的位置下移了100个像素。我的问题来了,在动画过程中,我怎么才能得到这个View的位置呢?通过获取它的frame属性,仅仅会给我返回最终的CGRect位置,而获取不到它移动中的位置。


// sometime during animation


CGRect curRect = v.frame;


比如说吧,如果你建了一个10秒的动画,你会希望在第5秒的时候从v.frame中获取的值应该是超出它最初位置50像素那个位置,但是实际上返回的值是100.

这么说来,可能应该通过UIView的层获取它的位置,比如下面这段代码:

CGrect curRect = v.layer.frame;

不过看来这样也不行,失败的原因是你设置的frame属性在动画的过程中一直保持,你得用别的方式得到这个view运动过程中的位置的CGRect。这么说有点道理,但是文档中写的并不是很清楚。实际上你应该用这样一段代码获取动画中View的位置:


CGRect curRect
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐