美文网首页
CATransform3D 立體旋轉的效果

CATransform3D 立體旋轉的效果

作者: 嗯哎嘶唠咯 | 来源:发表于2017-07-07 14:59 被阅读27次

今天看了篇帖子,学习了一下CATransform3D 的使用。

废话不多说,先上效果图:


7月-07-2017 14-55-51.gif

talk is cheap show me the code(帖子中有详细的解释,不在BB):

- (void)viewDidLoad {
    [super viewDidLoad];
    
   viewFram = self.view.bounds;
   center_Y = (viewFram.size.height)/2;
   center_X = viewFram.size.width/2;
   angel = CGPointZero;
    
    // 1 创建testVeiw
    testView = [[UIView alloc]initWithFrame:CGRectMake(0, center_Y - 50, viewFram.size.width, 100)];
    testView.backgroundColor = [UIColor redColor];
    [self.view addSubview:testView];

    // 2 testView  添加移动手势
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)];
    [testView addGestureRecognizer:panGesture];

    // 3 添加6个点
    [self addSixPointView];
}


- (void)addSixPointView{
    
    CATransform3D diceTransform = CATransform3DIdentity;
    
    // 1
    UIImageView *imgView1 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"dice1"]];
    imgView1.frame = CGRectMake(center_X-50, 0, 100, 100);
    // 向Z轴平移50 (向屏幕外)
    diceTransform = CATransform3DTranslate(diceTransform, 0, 0, 50);
    imgView1.layer.transform = diceTransform;
    
    // 6
    UIImageView *imgView6 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"dice6"]];
    imgView6.frame = CGRectMake(center_X-50, 0, 100, 100);
    diceTransform = CATransform3DTranslate(CATransform3DIdentity, 0, 0, -50);
    imgView6.layer.transform = diceTransform;
    
    // 2
    UIImageView *imgView2 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"dice2"]];
    imgView2.frame = CGRectMake(center_X-50, 0, 100, 100);
    diceTransform = CATransform3DRotate(CATransform3DIdentity, -M_PI_2, 0, 1, 0);
    diceTransform = CATransform3DTranslate(diceTransform, 0, 0, 50);
    imgView2.layer.transform = diceTransform;

    // 5
    UIImageView *imgView5 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"dice5"]];
    imgView5.frame = CGRectMake(center_X-50, 0, 100, 100);
    diceTransform = CATransform3DRotate(CATransform3DIdentity, -M_PI_2, 0, 1, 0);
    diceTransform = CATransform3DTranslate(diceTransform, 0, 0, -50);
    imgView5.layer.transform = diceTransform;
    
    // 3
    UIImageView *imgView3 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"dice3"]];
    imgView3.frame = CGRectMake(center_X-50, 0, 100, 100);
    diceTransform = CATransform3DRotate(CATransform3DIdentity, -M_PI_2, 1, 0, 0);
    diceTransform = CATransform3DTranslate(diceTransform, 0, 0, 50);
    imgView3.layer.transform = diceTransform;
    
    // 4
    UIImageView *imgView4 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"dice4"]];
    imgView4.frame = CGRectMake(center_X-50, 0, 100, 100);
    diceTransform = CATransform3DRotate(CATransform3DIdentity, M_PI_2, 1, 0, 0);
    diceTransform = CATransform3DTranslate(diceTransform, 0, 0, 50);
    imgView4.layer.transform = diceTransform;
    
    [testView addSubview:imgView1];
    [testView addSubview:imgView2];
    [testView addSubview:imgView3];
    [testView addSubview:imgView4];
    [testView addSubview:imgView5];
    [testView addSubview:imgView6];
    
}

- (void)panAction:(UIPanGestureRecognizer *)panGesture{
    
    CGPoint point = [panGesture translationInView:testView];
    CGFloat angel_x = angel.x + point.x/30;
    CGFloat angel_y = angel.y - point.y/30;
    
    CATransform3D transform = CATransform3DIdentity;
    transform.m34 = -1 /500;
    transform = CATransform3DRotate(transform,angel_x , 0, 1, 0);
    transform = CATransform3DRotate(transform, angel_y, 1, 0, 0);
    testView.layer.sublayerTransform = transform;
    
    if (panGesture.state == UIGestureRecognizerStateEnded) {
        angel.x = angel_x;
        angel.y = angel_y;
    }
    
}

ps

学习不能停🌚

相关文章

  • CATransform3D 立體旋轉的效果

    今天看了篇帖子,学习了一下CATransform3D 的使用。 废话不多说,先上效果图: talk is chea...

  • 截拳之家·譚泰利|髖關節旋轉和肩部的伸展

    在任何運動中,髖關節旋轉的力量都是至關重要的,髖關節旋轉不到位,拳頭就無法去深入你的目標,身體也得不到全方位的...

  • 旋轉

    這個世界被相機哢嚓一聲截下來的時候 綠蝴蝶沒有從瓜藤上飛起來 地鐵上人潮過於擁擠另一個人的呼吸靠在我身上 一促一促...

  • 格物第一百四十日

    屏蔽瑣屑,轉移人事,余之始立格物之志也。今不能達。體重之減輕,余所必也。請先試之。

  • 3D动画实现总结

    在这里我们将使用CATransform3D来实现所需要的3D效果。CATransform3D和CGAffineTr...

  • CATransform3D的介绍以及3D动画的实现

    熟练使用CATransform3D能实现我们所需求的较复杂的动画效果,以下将系统介绍CATransform3D的一...

  • 《咖啡室的動人時光》

    有時候 我們都會不自覺地跌進了某個漩渦裡, 不停地重複著 向上向下都不由自主的旋轉旋轉旋轉, 就像是一次又一次重複...

  • 一一與旋轉屋

    一一與旋轉屋 徐空文 (這是十幾年前創作的第一個劇本,雖然幼稚,但現在看來竟是我最喜歡的劇本之一,雖然之後曾以寫劇...

  • 旋轉吧旋轉吧 宇宙啊宇宙 也為你將轉個不停

    by 阿信from 我乐苦多 March 25, 2006 半島上的太陽出來了。我還醒著。 在這個看不到小島上的新...

  • CATransform3D遇到的坑

    CATransform3D.m34设置无效果 CATransform3D outTransfrom = CATra...

网友评论

      本文标题:CATransform3D 立體旋轉的效果

      本文链接:https://www.haomeiwen.com/subject/edolhxtx.html