zoukankan      html  css  js  c++  java
  • Swift

    Swift - transform.m34动画示例

    效果

    源码

    https://github.com/YouXianMing/Swift-Animations

    //
    //  CATransform3DM34Controller.swift
    //  Swift-Animations
    //
    //  Created by YouXianMing on 16/8/19.
    //  Copyright © 2016年 YouXianMing. All rights reserved.
    //
    
    import UIKit
    
    class CATransform3DM34Controller: NormalTitleViewController {
    
        var layer          : CALayer!
        var timer          : GCDTimer!
        var transformState : Bool! = false
        
        override func setup() {
            
            super.setup()
            
            initLayer()
            
            timerEvent()
        }
        
        func initLayer() {
            
            let image         = UIImage(named: "1")
            layer             = CALayer()
            layer.frame       = CGRectMake(0, 0, image!.size.width / 2, image!.size.height / 2)
            layer.position    = (contentView?.middlePoint)!
            layer.borderWidth = 4
            layer.borderColor = UIColor.blackColor().CGColor
            layer.contents    = image?.CGImage
            contentView?.layer.addSublayer(layer)
        }
        
        func timerEvent() {
            
            weak var wself = self
            timer = GCDTimer(inQueue: GCDQueue.mainQueue)
            timer.event({
                
                if wself?.transformState == false {
                
                    wself?.transformState = true
                    wself?.transformStateEvent()
                    
                } else {
                
                    wself?.transformState = false
                    wself?.normalStateEvent()
                }
                
                }, timeIntervalWithSeconds: 2.0, delayWithSeconds: 1.0)
            timer.start()
        }
    
        func transformStateEvent() {
            
            var perspectiveTransform = CATransform3DIdentity
            perspectiveTransform.m34 = -(1.0 / 500.0)
            perspectiveTransform     = CATransform3DTranslate(perspectiveTransform, 30, -35, 0)
            perspectiveTransform     = CATransform3DRotate(perspectiveTransform, Math.RadianFromDegree(30), 0.75, 1, -0.5)
            perspectiveTransform     = CATransform3DScale(perspectiveTransform, 0.75, 0.75, 0.75)
            
            layer.transform              = perspectiveTransform
            layer.allowsEdgeAntialiasing = true
            layer.speed                  = 0.5
        }
        
        func normalStateEvent() {
            
            let perspectiveTransform = CATransform3DIdentity
            layer.transform          = perspectiveTransform
            layer.speed              = 0.5
        }
    }
  • 相关阅读:
    类图的基本知识
    设计模式——单例模式
    解决phpcms V9 推荐位无法排序
    PHPCMS 多站点管理切换问题
    天天团购系统-简单的目录结构
    php的时间输出格式
    天天团购--源码目录结构
    天天团购系统--部分模板语法
    PHP json数据格式化方法
    PHP json_encode中文乱码解决方法
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/5787369.html
Copyright © 2011-2022 走看看