1. Storybord准备工作
2. CubeViewController控制器
class CubeViewController: UIViewController {
@IBOutlet weak var tranView: UIView!
@IBOutlet weak var orangeView: UIView!
@IBOutlet weak var tealView: UIView!
@IBOutlet weak var redView: UIView!
@IBOutlet weak var purpleView: UIView!
@IBOutlet weak var greenView: UIView!
@IBOutlet weak var yellowView: UIView!
var angle = CGPoint.zero
override func viewDidLoad() {
super.viewDidLoad()
var transform = CATransform3DRotate(CATransform3DIdentity, .pi / 2, 1, 0, 0)
orangeView.layer.transform = transform
purpleView.layer.transform = transform
transform = CATransform3DRotate(CATransform3DIdentity, .pi / 2, 0, 1, 0)
tealView.layer.transform = transform
redView.layer.transform = transform
greenView.layer.transform = CATransform3DTranslate(CATransform3DIdentity, 0, 0, -75)
yellowView.layer.transform = CATransform3DTranslate(CATransform3DIdentity, 0, 0, 75)
let pan = UIPanGestureRecognizer(target: self, action: #selector(viewTransform(sender:)))
tranView.addGestureRecognizer(pan)
// Do any additional setup after loading the view.
}
@objc func viewTransform(sender: UIPanGestureRecognizer) {
let point = sender.translation(in: tranView)
let angleX = angle.x + point.x / 30
let angleY = angle.y - point.y / 30
var transform = CATransform3DIdentity
transform.m34 = -1 / 500
transform = CATransform3DRotate(transform, angleX, 0, 1, 0)
transform = CATransform3DRotate(transform, angleY, 1, 0, 0)
tranView.layer.sublayerTransform = transform
if sender.state == .ended {
angle.x = angleX
angle.y = angleY
}
}
}
其中m34为深景效果