• iOS 3D UI(3D翻转

    2019-06-29 09:31:12
    demo链接:http://pan.baidu.com/s/1eQVPj0m 先写个demo 转载于:https://www.cnblogs.com/hxwj/p/5213251.html

    demo链接:http://pan.baidu.com/s/1eQVPj0m

    先写个demo

    转载于:https://www.cnblogs.com/hxwj/p/5213251.html

    展开全文
  • iOS立方体翻转3D特效

    2015-12-09 14:06:36
    // // ViewController.m ...// 3D动态旋转动画 // // Created by 杨继雷 on 15/12/9. // Copyright © 2015年 杨继雷. All rights reserved. // #import "ViewController.h" #define imageCount 5

    //

    //  ViewController.m

    //  3D动态旋转动画

    //

    //  Created by 杨继雷 on 15/12/9.

    //  Copyright © 2015杨继雷. All rights reserved.

    //


    #import "ViewController.h"

    #define imageCount 5

    @interface ViewController ()

    {

        UIImageView *_imageView;

        int _currentIndex;

    }

    @end


    @implementation ViewController


    - (void)viewDidLoad {

        [superviewDidLoad];

        _imageView=[[UIImageViewalloc]initWithFrame:CGRectMake(0,50, 320, 480)];

        _imageView.contentMode=UIViewContentModeScaleAspectFit;

        _imageView.image=[UIImageimageNamed:@"picture0.jpg"];//默认图片

        [self.viewaddSubview:_imageView];

        //添加手势

        UISwipeGestureRecognizer *leftSwipeGesture=[[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(leftSwipe:)];

        leftSwipeGesture.direction=UISwipeGestureRecognizerDirectionLeft;

        [self.viewaddGestureRecognizer:leftSwipeGesture];

        

        UISwipeGestureRecognizer *rightSwipeGesture=[[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(rightSwipe:)];

        rightSwipeGesture.direction=UISwipeGestureRecognizerDirectionRight;

        [self.viewaddGestureRecognizer:rightSwipeGesture];

        // Do any additional setup after loading the view, typically from a nib.

    }

    #pragma mark 向左滑动浏览下一张图片

    -(void)leftSwipe:(UISwipeGestureRecognizer *)gesture{

        [selftransitionAnimation:YES];

    }


    #pragma mark 向右滑动浏览上一张图片

    -(void)rightSwipe:(UISwipeGestureRecognizer *)gesture{

        [selftransitionAnimation:NO];

    }


    #pragma mark 转场动画

    -(void)transitionAnimation:(BOOL)isNext{

        //1.创建转场动画对象

        CATransition *transition=[[CATransitionalloc]init];

        

        //2.设置动画类型,注意对于苹果官方没公开的动画类型只能使用字符串,并没有对应的常量定义

        transition.type=@"cube";

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    typedef enum : NSUInteger {
        Fade = 1,                   //淡入淡出
        Push,                       //推挤
        Reveal,                     //揭开
        MoveIn,                     //覆盖
        Cube,                       //立方体
        SuckEffect,                 //吮吸
        OglFlip,                    //翻转
        RippleEffect,               //波纹
        PageCurl,                   //翻页
        PageUnCurl,                 //反翻页
        CameraIrisHollowOpen,       //开镜头
        CameraIrisHollowClose,      //关镜头
        CurlDown,                   //下翻页
        CurlUp,                     //上翻页
        FlipFromLeft,               //左翻转
        FlipFromRight,              //右翻转
         
    } AnimationType;

        

        //设置子类型

        if (isNext) {

            transition.subtype=kCATransitionFromRight;

        }else{

            transition.subtype=kCATransitionFromLeft;

        }

        //设置动画时常

        transition.duration=1.0f;

        

        //3.设置转场后的新视图添加转场动画

        _imageView.image=[selfgetImage:isNext];

        [_imageView.layeraddAnimation:transition forKey:@"KCTransitionAnimation"];

    }


    #pragma mark 取得当前图片

    -(UIImage *)getImage:(BOOL)isNext{

        if (isNext) {

            _currentIndex=(_currentIndex+1)%imageCount;

        }else{

            _currentIndex=(_currentIndex-1+imageCount)%imageCount;

        }

        NSString *imageName=[NSStringstringWithFormat:@"picture%i.jpg",_currentIndex];

        return [UIImageimageNamed:imageName];

    }

    - (void)didReceiveMemoryWarning {

        [superdidReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }


    @end


    展开全文
  • ios实现超炫3d界面切换。。。。。。。。。。。。。。。。。。。。。。
  • - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. ... self.title = @"卡牌翻转效果"; self.edgesForExtendedLayout = UIRec...

    - (void)viewDidLoad {

        [super viewDidLoad];

        // Do any additional setup after loading the view, typically from a nib.

        self.title = @"卡牌翻转效果";

        self.edgesForExtendedLayout = UIRectEdgeNone;

        [self.view addSubview:self.collectionView];

        NSArray * arr = @[@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0",@"0"];

        [arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

            Model *model =[[Model alloc] init];

            model.select = [obj boolValue];

            [self.dataArray addObject:model];

        }];

        [self.collectionView reloadData];

    }

    -(NSMutableArray *)dataArray{

        if (!_dataArray) {

            _dataArray = [NSMutableArray array];

        }

        return _dataArray;

    }

    -(UICollectionView *)collectionView{

        if (!_collectionView) {

            UICollectionViewFlowLayout * layout = [[UICollectionViewFlowLayout alloc] init];

            // 定义大小

            layout.itemSize = CGSizeMake((appWidth - 40)/2.0, 0.8*(appWidth - 40)/2.0);

            // 设置最小行间距

            layout.minimumLineSpacing = 10;

            // 设置垂直间距

            layout.minimumInteritemSpacing = 10;

            layout.sectionInset = UIEdgeInsetsMake(15, 15, 15, 15);

            // 设置垂直间距

            layout.headerReferenceSize = CGSizeMake(0, 0);

            // 设置滚动方向(默认垂直滚动)

            layout.scrollDirection = UICollectionViewScrollDirectionVertical;

            _collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, appWidth, appHeight - 64) collectionViewLayout:layout];

            _collectionView.backgroundColor = [UIColor clearColor];

            _collectionView.delegate = self;

            _collectionView.dataSource = self;

            [_collectionView registerNib:[UINib nibWithNibName:NSStringFromClass([HomeCollectionViewCell class]) bundle:nil] forCellWithReuseIdentifier:@"homeCell"];

        }

        return _collectionView;

    }

    -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{

        return 1;

    }

    -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{

        return self.dataArray.count;

    }

    -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

        HomeCollectionViewCell * cell =  [collectionView dequeueReusableCellWithReuseIdentifier:@"homeCell" forIndexPath:indexPath];

        Model * model = self.dataArray[indexPath.item];

        if (model.select == YES) {

            cell.secondView.hidden = YES;

            cell.firstview.hidden = NO;

        }else{

           

            cell.secondView.hidden = NO;

            cell.firstview.hidden = YES;

        }

        cell.bt.tag = indexPath.item;

        [cell.bt addTarget:self action:@selector(didBtAction:event:) forControlEvents:UIControlEventTouchUpInside];

        return cell;

    }

    -(void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{

        Model* model = self.dataArray[indexPath.item];

        HomeCollectionViewCell * cell1 = (HomeCollectionViewCell *)cell;

        if (model.select == YES) {

            cell1.secondView.hidden = YES;

            cell1.firstview.hidden = NO;

        }else{

            cell1.secondView.hidden = NO;

            cell1.firstview.hidden = YES;

        }

     

    }

    - (void)didBtAction:(UIButton *)sender event:(UIEvent *)event{

        

        NSSet *touches = [event allTouches];

        UITouch *touch = [touches anyObject];

        CGPoint position = [touch locationInView:self.collectionView];

        

        NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:position];

    //    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:sender.tag inSection:0];

        HomeCollectionViewCell *cell = (HomeCollectionViewCell*)[self.collectionView cellForItemAtIndexPath:indexPath];

       

        

        

        

        //这里时查找视图里的子视图(这种情况查找,可能时因为父视图里面不只两个视图)

    //    NSInteger fist= [[cell subviews] indexOfObject:[cell viewWithTag:1000]];

    //    NSInteger seconde= [[cell subviews] indexOfObject:[cell viewWithTag:2000]];

        

        Model* model = self.dataArray[indexPath.item];

        

        // 3、3D翻转动画

        [UIView animateWithDuration:1.0 animations:^{

            if (model.select == YES)

            {

                

                cell.secondView.hidden = NO;

                cell.firstview.hidden = YES;

                model.select = NO;

                [self.dataArray replaceObjectAtIndex:indexPath.item withObject:model];// 当前显示的是正面视图

                [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:cell cache:YES];

            }

            else

            {

                cell.secondView.hidden = YES;

                cell.firstview.hidden = NO;

                model.select = YES;

                [self.dataArray replaceObjectAtIndex:indexPath.item withObject:model];// 当前显示的是背面视图

                [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:cell cache:YES];

            }

        }];

     

    }

     

    转载于:https://www.cnblogs.com/liuzhuan155/p/6639842.html

    展开全文
  • iOS实现3D旋转

    2017-04-02 14:14:36
    最近看到了一个3D旋转的动画,就想着自己去实现以下。那么,接下来就通过这边文章记录以下学习过程,慢慢深入了解以下3D旋转。一、如何旋转每个View都在系统的坐标系中,就手机屏幕来说,左上角为 (0 , 0),向右横向...

    最近看到了一个3D旋转的动画,就想着自己去实现以下。那么,接下来就通过这边文章记录以下学习过程,慢慢深入了解以下3D旋转。

    一、如何旋转

    每个View都在系统的坐标系中,就手机屏幕来说,左上角为 (0 , 0),向右横向的为X轴正方向,向下纵向的为Y轴正方向,垂直于手机屏幕的方向既Z轴方向。
    这里写图片描述

    所以Z轴的旋转属于平面上的旋转,实现3D效果的前提就是有X轴或者Y轴的参与。

    二、沿着Y轴旋转

    先看一下CATransform3DMakeRotation的定义:
    
    CA_EXTERN CATransform3D CATransform3DMakeRotation (CGFloat angle, CGFloat x, CGFloat y, CGFloat z)
    
    angle:角度    x,y,z分别代表是三个方向的坐标

    按照这个思路,于是我写下如下的代码:

    CATransform3D rotate = CATransform3DMakeRotation(M_PI/6, 0, 1, 0);
    
    self.imageView.layer.transform = rotate;
    

    运行之后可以发现,imageView 并没有出现3D效果,只是单纯的在Y轴缩短了一些。为何会出现这样的效果?

    查资料后发现,原来在CALayer的显示系统中,默认使用的是正交投影,没有远小近大效果,所以我们对 imageView 的旋转操作,只能造成Y轴上的缩放。而无法观察到3D 的效果。

    其实这个时候 imageView 已经沿着Y轴旋转了 M_PI/6 ,但只是我们无法直接观察到这种效果。

    三、添加3D效果

    这时候我们需要用到透视投影。

    先看每个矩阵里数字代表的含义:

     struct CATransform3D
     {
    
     CGFloat m11(x缩放), m12(y切变), m13(旋转), m14();
    
     CGFloat m21(x切变), m22(y缩放), m23(), m24();
    
     CGFloat m31(旋转), m32(), m33(), m34(透视效果);
    
     CGFloat m41(x平移), m42(y平移), m43(z平移), m44();
    
     };
    
    我们所需要的正是 m34 。
    

    构造一个旋转矩阵

    CATransform3D rotate = CATransform3DMakeRotation(M_PI/6, 0, 1, 0);

    构造一个透视矩阵

    其中:M34属性 控制透视效果

    正的值向下(左)方往里缩放 负的值上(右)方往里缩放

    disZ 控制透视的强度 数字越小 深度越大 拉伸效果越明显

    CGFloat disZ = 200;
    
    CATransform3D scale = CATransform3DIdentity;
    
    scale.m34 = -1.0f/disZ; 

    然后把两个矩阵相乘 旋转矩阵*透视矩阵

    CATransform3D transform = CATransform3DConcat(rotate, scale);    

    把最后的结果赋给 imageView 的 layer 的 transform 。

    self.imageView.layer.transform = transform;

    运行起来,具有3D效果的一张图就展示在我们的眼前了,啧啧,是不是挺简单。

    四、控制旋转中心轴

    如果通过角度的递增,给我们的3D旋转加一个动画,我们就会明显的看到,默认的以平行于Y轴的 imageView 的中心轴进行旋转。那么如果让我们 imageView 以自己的左边线进行旋转呢?

    其实也很简单,旋转是以layer的锚点为中心进行旋转的。默认是 (0.5 , 0.5) 。我们只需要改变锚点的位置就好了。

    image.layer.anchorPoint = CGPointMake(0, 0.5); 
    展开全文
  • ios-3D旋转.zip

    2020-04-14 23:30:04
    3D旋转
  • activity跳转3d翻转动画 两个activity连续的非常难做 所以我只能通过一个视觉效果来实现 刚打开一个activity的时候,就发送消息  new Handler() {  @Override  public void handleMessage...


    activity跳转3d翻转动画


    两个activity连续的非常难做
    所以我只能通过一个视觉效果来实现


    刚打开一个activity的时候,就发送消息




            new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    Intent intent = getIntent();
                    if (intent.getBooleanExtra("startAnimation", false)) {
                        View ll = findViewById(R.id.ll);
                        float centerX = ll.getWidth() / 2.0f;
                        float centerY = ll.getHeight() / 2.0f;
                        float depthZ = 0f;
                        Rotate3dAnimation rotate3dAnimationX = new Rotate3dAnimation(270, 360, centerX, centerY, depthZ, Rotate3dAnimation.ROTATE_Y_AXIS, true);
                        rotate3dAnimationX.setDuration(300);
                        rotate3dAnimationX.setFillAfter(true);
                        ll.startAnimation(rotate3dAnimationX);
                    }
                }
            }.sendEmptyMessageDelayed(0, 10);




    然后就执行270度到360度的动画
    展开全文
  • 记录两个比较简单的动画,一个是翻转的动画,一个是旋转的动画。 旋转动画: 1 [UIView animateWithDuration:3 animations:^{ if (formView) { formView.transform = CGAffineTransformMakeRotation(M_PI);...
  • 说来惭愧自己惭愧,由于自己开启了懒汉模式,一直没怎么研究过IOS7新的转场的动画,今天死磕的一天终于有点成效,还简单弄了下CATransform3D的内容 先看图 现在好多APP喜欢这样玩转场动画。。。于是就简单研究了...
  • iOS 界面翻转切换动画

    2019-01-03 19:43:46
    [UIView beginAnimations:nil context:NULL];  [UIView setAnimationCurve:UIViewAnimationCurveLinear];  [UIView setAnimationDuration:0.75];  [self.navigationController pushViewController:cont...
  • ios按钮点击后翻转效果 CATransform3D按钮点击后翻转效果CAAnimationGroupCATransform3DMakeRotationCAMediaTimingFunction 上图先,图上是一个按钮,点击后旋转,代码是网上找到的,不过找到的时候直接...
  • 项目中UI设计了一个仿IOS界面跳转3D翻转的效果,尼玛人家系统自带的啊。无奈只好找轮子了,看了看网上全是一个acitivity两个VIew或者两个Fragment的跳转,作为技术人的执着不想那么实现,本来没有关系的两个界面...
  • 在测试Unity3D ZXing代码时,调用iOS摄像头的效果总不令我满意,你会发现用WebCamTexture调用的摄像头画面跟iOS自带相册调用的效果不一样,焦距有点问题。虽然这不影响ZXing的调用,但我还是搜了下,解决了这个问题...
  • ios 关于3d旋转问题

    2016-08-18 00:30:19
    1.关于layer层的旋转方向问题  layer层遵守 左手坐标系:x向右,y向下,z朝向自己(左手大拇指顺着z轴指去,握紧拳头其余4指由x轴到y轴)  前提:当旋转角度为正数的时候逆时针旋转,当旋转角度为负数的时候顺时针...
  • CATransform3D myTransform; myTransform = CATransform3DMakeRotation(angle, x, y, z); 该CATransform3DMakeRotation函数创建了一个转变,将在三维轴坐标系以任意弧度旋转层。x-y-z轴的有个确定的范围...
  • 从事iOS开发已经有一段时间了,之前一直忙于工作,几乎很少有时间写一些东西来对自己掌握的技术进行一下总结,现在想想,有些后悔,因为之前在遇见问题的时候或者学习新技术的时候都是在翻看他人的博客或者查看苹果...
  • 就像一张两面的板子被翻转一样。于是在最近的项目里面就写了下这个效果:   思路是这样的,先将被显示的ViewController的内容渲染到一张图片上去。 然后在window上面添加一个新的V
  • iOS形变之CATransform3D

    2016-06-13 17:01:58
    CATransform3D是一个用于处理3D形变的类,其可以改变控件的平移、缩放、旋转、斜交等,其坐标系统采用的是三维坐标系,即向右为x轴正方向,向下为y轴正方向,垂直屏幕向外为z轴正方向
  • 最近写一个新年签的项目,要使用卡片翻转3D动画效果,像这样: 点击图片放大、翻转、然后飞走,于是想到了 css3 的 rotate3d() 属性来做翻转的效果。 开始 简单介绍一下怎么使用: rotate3d(x, y, z, a) 有3个...
1 2 3 4 5 ... 20
收藏数 3,319
精华内容 1,327