一小段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
原文作者
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
相关文章推荐
- 扑克牌移动 下面代码模拟了一套扑克牌(初始排序A~K,共13张)的操作过程。
- 点击view上某个点,获取坐标让指定view移动过去
- spring mvc DispatcherServlet详解之二---request通过Controller获取ModelAndView过程
- RecyclerView获取网络数据并解析显示的过程
- Swift语言之View,Button控件实现小方块在界面上的移动(纯代码实现)
- php curl请求信息和返回信息设置代码实例,特别是在请求过程中存在重定向的时候获取请求返回头信息
- Activity中 findViewById 获取控件对象正确的代码位置
- 解决在onCreate()过程中获取View的width和Height为0的4种方法
- android 获取网页代码显示TextView中
- iOS代码获取所有控件View结构树存到XML查看
- eclipse中获取工作区中指定View视图的代码
- tableView中cell的删除、插入、移动、复制粘贴问题详解代码分析
- Objective-c 纯代码写简易界面,(1*view,1*label,3 * button,1*imageview,1*animation)
- Android 网络:使用URLConnection提交请求,获取html代码加载WebView
- Android 在代码中设置imageview的大小和位置(满足单方向的放大缩小和任意位置的移动)
- 解决在onCreate()过程中获取View的width和Height为0的4种方法
- android网络获取图片并保存在本地和获取手机SD卡中的图片显示到ImageView上及利用代码删除图片
- UIImageView实现图片移动,缩放、旋转的代码片段
- 解决在onCreate()过程中获取View的width和Height为0的4种方法
- 解决在onCreate()过程中获取View的width和Height为0的4种方法