A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一行代码一场梦,大家好我是阿达,今天要讨论的是本 App 里面最狂跩酷炫屌炸天的功能,也就是动画,在 iOS 开发中,想要建立一个成熟的动画,只需要认识一个 UIView 类别方法即可:

        UIView.animateWithDuration(1.0,animations)

        就是这么简单的一条程式,加入参数变化之后就可以有各式各样的动画效果了,所以我们今天重点放在 UIAView Animation

        现在我们准备帮之前的项目加上一个逐渐放大(dialog view)的特效,这个特效原理状态如下:
        开始状态:对话视图尺寸为零
        终止状态:对话视图尺寸正常

        小伙伴们可能会想说,那我要怎么把它缩小啊? iOS 提供变形的函数,让你可以缩放、旋转、还有移动,这里面我们要做到缩放就是建立一个CGAffineTransformMakeScale  并设定 UIView 的变形属性。

        首先我们要在ReviewViewController.swift 中加入一个 Outlet 变数:

@IBOutlet weak var dialogVIew: UIView!



现在我们要在 ReviewVIewController.swift  的 viewDidLoad  中加入下面的程式:
       
        //第一次载入视图的时候,把比例缩小
        dialogVIew.transform = CGAffineTransformMakeScale(0.0, 0.0)

        之后我们建立一个 UIView.animationWithDuration 方法来使用特效
//动画持续时间 0.7 秒 没有延迟,将视图恢复原来大小
override func viewDidAppear(animated: Bool) {
        UIView.animateWithDuration( 0.7,delay:0.0,options:nil, animations: {
        self.dialogVIew.transform = CGAffineTransformMakeScale(1, 1)
        },completion:nil)
    }
       




没错 接下来就是 Command + R的时间啦





动画很酷吧!现在我们介绍另外一种 UIView Animation 的变化样式,也就是 Spring Animation。Spring  Animation 的使用在 iOS7之后的版本都很常见,

        接下来我们来试试看向上滑动的特效(Slide Uo Animation) ,首先我们建立一个仿射变换函数(affine transform function) 来建立 slid - up animation:


        现在我们再回到 viewDIdLoad 当中加入下面一行程式:
         //讓視圖從下而上出現
        dialogVIew.transform = CGAffineTransformMakeTranslation(0, 500)





接下来就可以很开心按下 command + R 的来看看成果了




如果小伙伴觉得这样就已经是狂跩酷炫了!那阿达告诉你事情还没完,接下来的绝对让小伙伴感觉狂跩酷炫屌炸天!因为我们要结合两者动画效果!
       
        我们要做的事情很简单的!其实就只是在 viewDidLoad  更新一下:
                //結合兩者特效
        let socale = CGAffineTransformMakeScale(0.0, 0.0)
        let translate = CGAffineTransformMakeTranslation(0, 500)
        dialogVIew.transform = CGAffineTransformConcat(socale, translate)


然后我们再更新一下viewDIdAppear 方法:
            //動畫持續時間 0.7 秒 沒有延遲,將視圖恢復原來大小
    override func viewDidAppear(animated: Bool) {
        UIView.animateWithDuration( 0.7,delay:0.0,options:nil, animations: {
            let scale = CGAffineTransformMakeScale(1, 1)
            let translate = CGAffineTransformMakeTranslation(0, 0)
            self.dialogVIew.transform = CGAffineTransformConcat(scale, translate)



        },completion:nil)




不要犹豫 不要怀疑!command + R 按下去





当我第一次知道,要写  app  的时后,其实我是拒绝的!因为我不能你叫我写,我就写。我总得试一试啊?当App第一次在我手上照我的意思运行的时候。『当』 这感觉~好极了! 我也给小伙伴们分享一下,阿达要让你们知道我写起来是这样,你们写一起来也是这样! 十篇技术文到这篇告一段落,接下来的时间阿达要把心思放在入学考上面,暂时要跟小伙伴们说再见了,App 里面剩下的功能,阿达会在入学考之后再继续跟大家分享,后面还有很多关于 资料库,搜寻列,云端,社群分享。。。。更多功能敬请期待。十篇技术文一路走来感觉很累,也学习了很多,感谢小伙伴们的各种宝贵意见,更开心的是有小伙伴们愿意跟着阿达一起实作,让我们用一行一行的代码,一步一步的实现我们的梦想! 我是阿达,我们一定会再见!


评分

参与人数 1技术分 +3 黑马币 +8 收起 理由
黑妞 + 3 + 8 赞一个!

查看全部评分

9 个回复

倒序浏览
18530670911 来自手机 初级黑马 2015-6-30 13:15:32
沙发
阿达,加油
回复 使用道具 举报
:hug:
回复 使用道具 举报
感觉很厉害的样子  先收藏下
回复 使用道具 举报
最后一篇终于完成了啦
回复 使用道具 举报
离经叛道的女子 发表于 2015-7-1 00:50
最后一篇终于完成了啦

這不是最後 入學考之後我會繼續寫下去
回复 使用道具 举报
venn 中级黑马 2015-7-1 07:53:28
7#
好好加油,好好思考。。。
回复 使用道具 举报
楼主好厉害,学习中……
回复 使用道具 举报
楼主好厉害,继续努力一定能成功
回复 使用道具 举报
很厉害啊、千个赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马