模仿王者荣耀 login 页面

利用陀螺仪模仿王者荣耀的登陆页面,倾斜屏幕时,英雄图片会移动.
(我猜的...也可能是用了更牛逼的技术)
王者荣耀中,应该使用了多个层级,我这里只做一层

import CoreMotion
    //全局设置
    @IBOutlet weak var backImageView: UIImageView!
    @IBOutlet weak var suoluoRight: NSLayoutConstraint!
    @IBOutlet weak var suoluoTop: NSLayoutConstraint!
    @IBOutlet weak var imageView2: UIImageView!
    //全局引用 manager
    var manager = CMMotionManager()
    //最大可偏移的矢量
    let factor:CGFloat = 30.0
    override func viewDidLoad() {
        super.viewDidLoad()
        //初始化全局管理对象
        let motionManager = CMMotionManager()
        //全局引用 manager 防止销毁
        manager = motionManager
        //判断陀螺仪可不可以,判断陀螺仪是不是开启
        if manager .isGyroAvailable {
            let queue = OperationQueue.main
          //调用频率          
            manager.gyroUpdateInterval = 0.1
            manager.startDeviceMotionUpdates(to: queue, withHandler: { (motion, error) in
                let x = motion?.gravity.x
                let y = motion?.gravity.y
                let z = motion?.gravity.z
                //因为,我们不清楚用户使用怎样的姿势,进入游戏,如果一上来就让图片显示,在获取到角度后,图片会有一段"大跳",对,像范厨师那样
                if self.imageView2.image == nil{
                self.imageView2.image = UIImage(named: "索罗")
                }
                print("x---",x!,"y----",y!,"z-----",z!);
                //倾斜的角度 这里使用的是 负
                let fx = -CGFloat(x!)
                let fy = -CGFloat(y!)
                 //更改约束的
                self.suoluoTop.constant = fx * self.factor
                self.suoluoRight.constant = fy * self.factor
            })
        }
    }

你可能感兴趣的:(模仿王者荣耀 login 页面)