iOS编程——Swift实现一个3D可旋转的立方体(可做菜单页)

分享一个自己做的3d立方体(在瑞士航空见到过类似的这种首页),还可以添加以下要素变得更加完善:1)旋转过程中每个面的透明度可以更改2)手势滑动结束可以添加惯性转动动画 效果如图:直接上代码了 ,直接全粘贴到一个swift文件里既可以使用1.声明变量 公共函数import UIKitclass CubeMenuView: UIView {
摘要由CSDN通过智能技术生成

分享一个自己做的3d立方体(在瑞士航空见到过类似的这种首页),还可以添加以下要素变得更加完善:

1)旋转过程中每个面的透明度可以更改

2)手势滑动结束可以添加惯性转动动画 


效果如图:


直接上代码了 ,直接全粘贴到一个swift文件里既可以使用

1.声明变量 公共函数

import UIKit

class CubeMenuView: UIView {
    
    //立方体四个面
    var sidesArray: [UIImageView]!
    //立方体上面
    var topImageView: UIImageView!
    //立方体下面阴影
    var shadowImageView: UIImageView!
    //立方体每个面的长宽
    var cubeWidth: CGFloat = 0.0
    
    //记录手势开始点
    var beginPoint: CGPoint?
    //手势停止时x轴移动的距离
    var moveX: CGFloat = 0.0
    //每个面移动的角度
    var moveAngle: CGFloat = 0.0
    //每个面当前的角度
    var currentAngle: CGFloat = 0.0
    //最前面一个面的index
    var currentIndex: UInt = 1
    
    //整个立方体沿X轴的倾斜角度
    let kCubeInclinedAngle_Y: CGFloat = -CGFloat(M_PI_4 / 4.0)
    let distanceZ: CGFloat = 1000.0

    func CATransform3DMakePerspective(center: CGPoint, disZ: CGFloat) -> CATransform3D{
        let transToCenter = CATransform3DMakeTranslation(-center.x, -center.y, 0)
        let transBack = CATransform3DMakeTranslation(center.x, center.y, 0)
        var scale = CATransform3DIdentity
        scale.m34 = -1.0 / disZ
        
        return CATransform3DConcat(CATransform3DConcat(transToCenter, scale), transBack)
    }
    
    func CATransform3DPerspect(t: CATransform3D, center: CGPoint, disZ: CGFloat) -> CATransform3D {
        return CATransform3DConcat(t, CATransform3DMakePerspective(center, disZ: disZ))
    }
    
    
    func randomColor() -> UIColor {
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值