zoukankan      html  css  js  c++  java
  • swift4.2

    1. SB放上俩 imageview,拖线成类属性

    import UIKit
    
    class ViewController: UIViewController {
    
        @IBOutlet weak var box2: UIImageView!
        @IBOutlet weak var box1: UIImageView!
        
        //1.s创建仿真器
           private lazy var animator: UIDynamicAnimator = UIDynamicAnimator(referenceView: self.view)
        override func viewDidLoad() {
            super.viewDidLoad()
            //设置背景颜色图
            view.backgroundColor = UIColor(patternImage: UIImage.init(named: "background") ?? UIImage())
        }
        
        override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
            
            let point = touches.first?.location(in: view)
            snap(point: point ?? CGPoint.zero)
            
            gravity()
            collision()
            push()
        }
        
        ///重力
        func gravity() {
            
            //2.创建仿真行为
            let behavior = UIGravityBehavior(items: [box1])
            
            //重力方向,重力的力度
    //        behavior.gravityDirection = CGVector(dx: 10, dy: -10)
            
    //        //角度
    //        behavior.angle =  -CGFloat.pi
    //
    //        //量级:速度
    //        behavior.magnitude = 5
            
            //设置角度和量级
            behavior.setAngle( CGFloat.pi/2, magnitude: 5)
            
            //3. 仿真器添加仿真行为
            animator.addBehavior(behavior)
        }
        
        
        /// 碰撞
        func collision() {
            
            //2.创建仿真行为
            let behavior = UICollisionBehavior(items: [box1, box2])
            
            //添加碰撞边界: view的bounds
            behavior.translatesReferenceBoundsIntoBoundary = true
    
    //        items: 只碰撞元素
    //        boundaries:只碰撞边界
    //        everything:任何东西
            //碰撞模式
            behavior.collisionMode = UICollisionBehavior.Mode.everything
            
            //设置边界的内边距
    //        behavior.setTranslatesReferenceBoundsIntoBoundary(with: UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20))
            
            let str :  NSString = "123" // NSString 遵循NSCopying
            let str1 : String = "123"   //String 没有遵循NSCopying
            //添加一个边界
    //        behavior.addBoundary(withIdentifier: str, from: CGPoint(x: 0, y: 500), to: CGPoint(x: view.frame.size.width, y: 300))
            
            
            //设置代理
            behavior.collisionDelegate = self
            //3. 仿真器添加仿真行为
            animator.addBehavior(behavior)
        }
        
    
        /// 创建捕捉行为
        func snap(point:CGPoint){
            //FIXME:如果想要多次执行p捕捉行为,必须先移除添加捕捉行为
            animator.removeAllBehaviors()
            
            let behavior = UISnapBehavior(item: box2, snapTo: point)
            
            //动画流畅度
            behavior.damping = 1
            
            animator.addBehavior(behavior)
        }
    
        func push(){
            
            // continuous:一直推
            // instantaneous:推一次
            //1.创建推行为
            let behavior = UIPushBehavior(items: [box1], mode: UIPushBehavior.Mode.instantaneous)
            
            //设置方向
            behavior.pushDirection = CGVector(dx: 0, dy: -8)
            
            //2. 仿真器添加仿真行为
            animator.addBehavior(behavior)
        }
        
    }
    
    
    extension ViewController:UICollisionBehaviorDelegate{
        func collisionBehavior(_ behavior: UICollisionBehavior, beganContactFor item1: UIDynamicItem, with item2: UIDynamicItem, at p: CGPoint){
            print("开始碰撞 元素 - 元素", p)
        }
        
        func collisionBehavior(_ behavior: UICollisionBehavior, endedContactFor item1: UIDynamicItem, with item2: UIDynamicItem){
            print("结束碰撞 元素 - 元素")
        }
        
        func collisionBehavior(_ behavior: UICollisionBehavior, beganContactFor item: UIDynamicItem, withBoundaryIdentifier identifier: NSCopying?, at p: CGPoint){
            print("开始碰撞 元素 - 边界", p)
        }
        
        func collisionBehavior(_ behavior: UICollisionBehavior, endedContactFor item: UIDynamicItem, withBoundaryIdentifier identifier: NSCopying?){
            print("结束碰撞 元素 - 边界")
        }
    }
    

      

  • 相关阅读:
    [翻译] JSAnimatedImagesView
    css3 :nth-child 常用用法
    设置屏幕亮度(系统级别和应用级别)
    nodejs 改变全局前缀
    MongoDB数据库和集合的状态信息
    NoSQL架构实践(一)——以NoSQL为辅
    socket.io,系统api,
    svn sc create 命令行创建服务自启动
    background-size background-positon合并的写法
    【转】视频编码与封装方式详解
  • 原文地址:https://www.cnblogs.com/qingzZ/p/10302061.html
Copyright © 2011-2022 走看看