UIView中视图关系分析以及视图跳转动画的使用

来源:互联网 发布:淘宝头条写手招聘 编辑:程序博客网 时间:2024/06/06 11:36
现学习IOS开发,在看别人代码时看到别人使用UIView中的exchangeSubviewAtIndex方法进行了视图跳转。花了点时间仔细学习了一下UIView中的视图关系,可能对于很多人来说已经算是小儿科,但是希望能帮助到用到的人,下面把我学到的东西分享给大家。

exchangeSubviewAtIndex:withSubviewAtIndex: 首先必须的先看看官方文档,

Exchanges the subviews at the specified indices.结合着方法调用时需要传递

的参数可以这样很准确的翻译,在指定一个子view集合中,交换两个子view。

再看一下UIView的声明,NSArray *subviews;这样就不难理解了,对于UIView

就像一个大容器,里面可以承载很多东西,你可以通过addSubview方法向UIView

中添加子View(子View也可以是UIView),当然可以覆盖(后添加上来的视图盖

在先添加的视图上面),而大容器UIView对象就会把你添加进来的子view统一存放

在subviews里面进行管理,而子view也具有自己的索引index,IOS中索引也是从0

开始,第一个添加进来的view是index = 0;以后按照顺序逐渐增加。这样一想,对

于IOS开发中的视图关系一下子就清楚了。这样再去看

exchangeSubviewAtIndex:withSubviewAtIndex方法就变得好理解多了。


那么很多人使用exchangeSubviewAtIndex:withSubviewAtIndex方法是进

行视图跳转的,其实从上面分析的结果来看也很是简单了,在一个UIView

中添加视图1、视图2、视图3,当前显示的是视图3,向要跳转到视图1,

需要调用方法,把视图1的索引和视图3的索引传入到方法中就可以完

成视图的跳转了。


有人会问了,子view的索引怎么得到,我在浏览帖子的时候发现有人说得

不到,卧槽,子view都是统一在subviews里面管理的怎么可能得不到呢。

得到的方法很简单,subviews是NSArray对象,NSArray对象里有个方法

indexOfObject,把你想要得到索引的子view对象传过去就可以得到这个

view的索引了。子view视图怎么得到,定义成全局是一种方法,也可以

通过tag得到视图(UIView中的一个方法 viewWithTag,这个方法类似于

Android中的findViewByI'd),当然事先你得为子view设置tag了。


exchangeSubviewAtIndex:withSubviewAtIndex方法是完成视图跳转的没错

,其实大部分是完成那么有动画效果的视图跳转,就像以前学习Android时

对于IOS上的立体翻转动画效果很是崇拜,在IOS上很简单,废话不多说了。

上代码:


    [UIViewbeginAnimations:@"animationID"context:nil];//开始一个动画块,第一个参数为动画块标识
    
    [UIViewsetAnimationDuration:1.5f];//设置动画的持续时间
    //设置动画块中的动画属性变化的曲线,此方法必须在beginAnimations方法和commitAnimations,默认即为UIViewAnimationCurveEaseInOut效果。详细请参见UIViewAnimationCurve
    [UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];
    

    [UIViewsetAnimationRepeatAutoreverses:NO];//设置是否自动反转当前的动画效果


    //设置过渡的动画     效果,此处第一个参数可使用5种动画效果

    [UIViewsetAnimationTransition:UIViewAnimationTransitionFlipFromLeftforView:self.viewcache:YES];



//设置完成后启动跳转方法
    [self.viewexchangeSubviewAtIndex:1withSubviewAtIndex:2];


    [UIViewcommitAnimations];//提交动画




原创粉丝点击