ios两个子视图同一时间进入和离开动画

来源:未知 责任编辑:责任编辑 发表时间:2015-03-01 01:33 点击:

在一个视图控制器中,加入了两个视图targetSubview和sourceSubview。targetSubview默认是隐藏的,sourceSubview默认是可见的。

现在,我有这样一个需求。通过手指下滑,将targetSubview从上向下拉入到屏幕中,同时,sourceSubview将随着从屏幕下方离开。两个视图同步进入和离开是同步操作,用动画来实现。

第一种方法,使用UIView的类方法transition来实现,

   [UIView transitionFromView:sourceSubview toView:targetSubview duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil];

但,只能实现上下或左右翻转的效果,没有找到上下滑入滑出的效果。而且,该方法还将sourceSubview给remove掉了。

因此,这种方法不能满足要求。

第二种方法,使用使用UIView的类方法Animations来实现,是用delegate做一些前置或后置操作。

    targetSubview.frame = CGRectMake(0, targetSubview.frame.size.height + 50, targetSubview.frame.size.width, targetSubview.frame.size.height);

   

[UIView beginAnimations:@"Anim1" context:nil];

    [UIView setAnimationDuration:1];

    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];

    [UIView setAnimationDelegate:self];

   

targetSubview.hidden = NO;

    targetSubview.frame = CGRectMake(0, 0, targetSubview.frame.size.width, targetSubview.frame.size.height);

   

    [UIView commitAnimations];

    [UIView beginAnimations:@"Anim2" context:nil];

    [UIView setAnimationDuration:3];

    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

    [UIView setAnimationDelegate:self];

   

    sourceSubview.frame = CGRectMake(0, -50, sourceSubview.frame.size.width, sourceSubview.frame.size.height);

    sourceSubview.hidden = YES;

    [UIView commitAnimations];

//动画结束后执行

//sourceSubview.hidden = YES;

这个方法实现了targetSubview视图的动画方式缓缓进入,但sourceSubview立即消失,没有动画效果。

因此在第二个动画设置中,我将sourceSubview.hidden设置为了yes,如果不设置会有动画效果,但是sourceSubview视图因为过高会有部分遗留在屏幕上。

即使,在动画结束后设置也该属性,也不行。

这个动画的效果,实际上是在后台执行的,类似多线程方式在运行。动画运行时间设置为1秒,但最后程序不会等待的,因此,这里需要设置delegate才能实现这个效果了。在动画结束后,delegate方法+ (void)setAnimationDidStopSelector:(SEL)selector必须实现,在该方法中调用sourceSubview.hidden = YES;才行。

在动画开始前,也有一个delegate方法+ (void)setAnimationWillStartSelector:(SEL)selector,可以做一些设置。

第三种方法,还是使用使用UIView的类方法Animations来实现,但是是用block实现,需要在ios4.0以上才能执行。现在苹果都将ios版本都升级到7.0,老版本的用户越来越少了。

        targetSubview.alpha=0.0;

        targetSubview.hidden = NO;

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Lexical or Preprocessor Issue 'xxx.h
  • ios学习笔记(二)xcode 4.3.2下实现基本交互
  • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
  • UITableView一些方法
  • ios版本的helloworld
  • 如何为Iphone应用创建启动界面
  • 去掉屏幕键盘的方法
  • iPhone SDK开发:本地文本文件内容的读取
  • IOS类似iphone通讯录TableView的完整demo【附源码】
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索 - 移动版 - 返回顶部
Copyright © 2008-2013 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1