swift简单动画demo

from:
swift简单动画demo

动画GIF

No.name(cn)name(en)gif
1缩放动画Scalescale
2位移动画Translationscale
3旋转动画Rotationscale
4颜色动画Colorscale
5弹簧动画Springscale
6组合动画Concatscale

代码

import UIKit

class ViewController: UIViewController {



    var rect: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        initrectView()
    }

    var i: Int = 0

    @IBAction func onNextButtonClick(sender: UIButton) {
        switch i%6 {
        case 0:
            showScaleAnim() // 1. 缩放动画
        case 1:
            showTranslationAnim() // 2. 位移动画
        case 2:
            showRotationAnim() // 3. 旋转动画
        case 3:
            showColorAnim() // 4. 颜色动画
        case 4:
            showSpringAnim() // 5. 弹簧动画
        default:
            showConcatAnim() // 6. 组合动画
        }

        i += 1
    }


    /**
     初始化动画对象
     */
    func initrectView() {
        let rectFrame = CGRectMake(50, 50, 100, 100)
        rect = UIView(frame: rectFrame)

        rect.backgroundColor = UIColor.cyanColor()

        self.view.addSubview(rect)
    }

    func resumeRectView() -> Void {
        rect.transform = CGAffineTransformIdentity
    }

    /**
     普通动画. 缩放
     */
    func showScaleAnim() {

        let duration: NSTimeInterval = 3 // 动画持续时间
        let delay: NSTimeInterval = 0 // 动画延迟时间
        let options: UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseInOut // 动画选项
        let animations: () -> Void = {() -> Void in
            self.rect.transform = CGAffineTransformMakeScale(2, 2) // 缩放动画, x 放大 2, y 放大 2
        }
        UIView.animateWithDuration(duration, delay: delay, options: options, animations: animations) { (finish) -> Void in
            self.resumeRectView()
            print(finish)
        }
    }

    /**
     普通动画. 位移
     */
    func showTranslationAnim() {
        let duration: NSTimeInterval = 3 // 动画持续时间
        let delay: NSTimeInterval = 0 // 动画延迟时间
        let options: UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseInOut // 动画选项
        let animations: () -> Void = {() -> Void in
            self.rect.transform = CGAffineTransformMakeTranslation(0, 100) // 位移动画, x 移动 0, y 移动 100
        }
        UIView.animateWithDuration(duration, delay: delay, options: options, animations: animations) { (finish) -> Void in
            self.resumeRectView()
            print(finish)
        }
    }

    /**
     普通动画. 旋转
     */
    func showRotationAnim() {
        let duration: NSTimeInterval = 3 // 动画持续时间
        let delay: NSTimeInterval = 0 // 动画延迟时间
        let options: UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseInOut // 动画选项
        let animations: () -> Void = {() -> Void in
            self.rect.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2)) // 旋转动画, 旋转pi
        }
        UIView.animateWithDuration(duration, delay: delay, options: options, animations: animations) { (finish) -> Void in
            self.resumeRectView()
            print(finish)
        }
    }

    /**
     普通动画. 颜色
     */
    func showColorAnim() {
        let duration: NSTimeInterval = 3 // 动画持续时间
        let delay: NSTimeInterval = 0 // 动画延迟时间
        let options: UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseInOut // 动画选项
        let animations: () -> Void = {() -> Void in
            self.rect.backgroundColor = UIColor.greenColor() // 颜色动画, 变色为绿色
        }
        UIView.animateWithDuration(duration, delay: delay, options: options, animations: animations) { (finish) -> Void in
            self.resumeRectView()
            print(finish)
        }
    }

    /**
     弹簧动画, 一个球变大
     */
    func showSpringAnim() {
        let duration: NSTimeInterval = 3 // 动画持续时间
        let delay: NSTimeInterval = 0 // 动画延迟时间
        let damping: CGFloat = 0.3 // 阻尼. 越大感觉越有粘性
        let velocity: CGFloat = 0 // 初速度
        let options: UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseInOut // 动画选项
        let animations: () -> Void = {() -> Void in
            self.rect.transform = CGAffineTransformMakeTranslation(0, 150) // 位移动画
        }

        UIView.animateWithDuration(duration, delay: delay, usingSpringWithDamping: damping, initialSpringVelocity: velocity, options: options, animations: animations) { (finish) -> Void in
            self.resumeRectView()
            print(finish)
        }
    }

    /**
     组合动画. 缩放 + 位移 + 颜色
     */
    func showConcatAnim() {
        let duration: NSTimeInterval = 3 // 动画持续时间
        let delay: NSTimeInterval = 0 // 动画延迟时间
        let options: UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseInOut // 动画选项
        let animations: () -> Void = {() -> Void in

            let anim1 = CGAffineTransformMakeScale(2, 2) // 缩放动画, x 放大 2, y 放大 2
            let anim2 = CGAffineTransformMakeTranslation(150, 50) // 位移动画, x 移动 150, y 移动 50

            let concatAnim = CGAffineTransformConcat(anim1, anim2) // 组合动画, 缩放和位移动画一起组合成新的动画

            self.rect.backgroundColor = UIColor.greenColor() // 颜色动画

            self.rect.transform = concatAnim
        }
        UIView.animateWithDuration(duration, delay: delay, options: options, animations: animations) { (finish) -> Void in
            self.resumeRectView()
            print(finish)
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TransGaming公司今天发布了一款号称革命性的纯软件3D渲染引擎工具,TransGaming宣称 这款渲染引擎工具支持所有的Pixel和Vertex Shader DX9特效,并且可以获得比微软D3D 的REF设备(reference rasterizer)快50倍的速度。可能很多朋友对TransGaming公司几 乎没怎么听说过,不过提到这家公司的一个名为Cedega的软件,很多熟悉Linux的朋友可 能马上就会想起了,Cedega是一个可以使Windows平台的游戏运行在Linux下的创新软件, 支持《战地:越南》、《马克思.佩恩》、《半条命2》等多款Windows平台下的人气大作 。 今天TransGaming新发布的SwiftShader工具据说可以让用户使用非常一般的显卡也能达到 相当不错的游戏速度,不知道这款工具会不会影响到ATi和nVIDIA的生意。我们先一起来 看看SwiftShader的具体工作需求: —— 700 MHz或更高的x86处理器(需要支持SSE扩展指令集),推荐Pentium-M处理器 —— 一块2D显卡,无需3D显卡!! —— Win2000或XP系统,Linux系统通过Cedega支持也可以。 —— 256MB内存 —— 25MB磁盘空间 SwiftShader通过TransGaming自己的SwiftAsm runtime code生成系统来达到其声称的执 行效率,SwiftAsm可以把所有基于shader的、固定的几何函数以及像素管线操作代码转换 成为高速的x86 SSE/MMX代码,然后这些代码会被缓存起来以备随时调用。SwiftAsm可以 让开发者很容易的为自己程序进行高效优化。 SwiftShader的安装非常简单SwiftShader的渲染引擎已经被封装到了D3D8.DLL和 D3D9.DLL这两个DLL文件中。这两个DLL文件可以被拷贝到任何使用D3D的应用程序目录下 ,SwiftShader会自动代替操作系统的D3D引擎。除了DLL文件外,还需要一个额外的配置 文件SwiftShader.ini来供SwiftShader调用。不过并非所有的D3D应用程序都能正常的使 用的SwiftShader的渲染引擎,很多程序和游戏需要通过TransGaming公司的调试修改认证 才可以顺利运行。 Demo在那两个文件夹中! 如果想使用此软件的功能,请将d3d8.dll d3d9.dll 和 SwiftShader.ini 拷贝到游戏目录下即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值