美文网首页
iOS 切换动画cardSlider类型

iOS 切换动画cardSlider类型

作者: 行走在北方 | 来源:发表于2019-08-16 19:06 被阅读0次
    [self setupViews];
    
    -(void)setupViews
    {
        __weak typeof(&*self)weakSelf = self;
        
        if (_redIV) {
            [_redIV removeFromSuperview];
        }
        
        
        _redIV = [[UIImageView alloc] init];
        [_redIV setBackgroundColor:[UIColor redColor]];
        [self.view addSubview:_redIV];
        
        [_redIV mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerX.mas_equalTo(weakSelf.view);
            make.centerY.mas_equalTo(weakSelf.view);
            make.width.mas_equalTo(200);
            make.height.mas_equalTo(200);
        }];
        
        [_imageArray insertObject:_redIV atIndex:0];
        
        
        
        if (_blueIV) {
            [_blueIV removeFromSuperview];
        }
        
        
        _blueIV = [[UIImageView alloc] init];
        [_blueIV setBackgroundColor:[UIColor blueColor]];
        [self.view addSubview:_blueIV];
        
        [_blueIV mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerX.mas_equalTo(weakSelf.view);
            make.centerY.mas_equalTo(weakSelf.view).offset(-20);
            make.width.mas_equalTo(200);
            make.height.mas_equalTo(200);
        }];
        
        [_imageArray insertObject:_blueIV atIndex:1];
        
        
        CGAffineTransform transform = CGAffineTransformMakeScale(1, 1);
        _blueIV.transform = CGAffineTransformScale(transform, 0.9, 0.9);
        
        
        if (_greenIV) {
            [_greenIV removeFromSuperview];
        }
        
        _greenIV = [[UIImageView alloc] init];
        [_greenIV setBackgroundColor:[UIColor greenColor]];
        [self.view addSubview:_greenIV];
        
        [_greenIV mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerX.mas_equalTo(weakSelf.view);
            make.centerY.mas_equalTo(weakSelf.view).offset(-40);
            make.width.mas_equalTo(200);
            make.height.mas_equalTo(200);
        }];
        
        [_imageArray insertObject:_greenIV atIndex:2];
        
        CGAffineTransform transformGreen = CGAffineTransformMakeScale(1, 1);
        _greenIV.transform = CGAffineTransformScale(transformGreen, 0.8, 0.8);
        
        
        [self.view bringSubviewToFront:[_imageArray objectAtIndex:0]];
        [[_imageArray objectAtIndex:1] exchangeSubviewAtIndex:1 withSubviewAtIndex:0];
        [self.view sendSubviewToBack:[_imageArray objectAtIndex:2]];
    }
    
    
    -(void)changePoint:(UIView*)pointView upView:(UIView*)upView  andchangeVale:(CGFloat)changeValue
    {
        __weak typeof(&*self)weakSelf = self;
        [pointView mas_remakeConstraints:^(MASConstraintMaker *make) {
            make.centerX.mas_equalTo(upView);
            make.centerY.mas_equalTo(upView).offset(+20*changeValue);
            make.width.mas_equalTo(200);
            make.height.mas_equalTo(200);
        }];
    }
    
    
    -(void)buttonClick
    {
        
        NSMutableArray *exchangeArray = [NSMutableArray array];
        
            [_tempArray insertObject:[_imageArray objectAtIndex:1] atIndex:0];
            [_tempArray insertObject:[_imageArray objectAtIndex:2] atIndex:1];
            [_tempArray insertObject:[_imageArray objectAtIndex:0] atIndex:2];
        
        if (_imageArray) {
            [_imageArray removeAllObjects];
        }
        
            _imageArray = [NSMutableArray arrayWithArray:_tempArray];
        
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            
            [_tempArray objectAtIndex:2].alpha = 0.1;
            
            [UIView animateWithDuration:1 animations:^{
                [self.view bringSubviewToFront:[_tempArray objectAtIndex:0]];
                [[_tempArray objectAtIndex:1] exchangeSubviewAtIndex:1 withSubviewAtIndex:0];
                [self.view sendSubviewToBack:[_tempArray objectAtIndex:2]];
                
                [self changePoint:[_tempArray objectAtIndex:0] upView:self.view andchangeVale:0];
                [self changePoint:[_tempArray objectAtIndex:1] upView:self.view andchangeVale:-1];
                [self changePoint:[_tempArray objectAtIndex:2] upView:self.view andchangeVale:-2];
    
                [self changeScaleWithUIView:[_tempArray objectAtIndex:0] andScaleVale:1];
                [self changeScaleWithUIView:[_tempArray objectAtIndex:1] andScaleVale:0.9];
                [self changeScaleWithUIView:[_tempArray objectAtIndex:2] andScaleVale:0.8];
                
                
            } completion:^(BOOL finished) {
                [_tempArray objectAtIndex:2].alpha = 1;
                
                [_tempArray removeAllObjects];
                _tempArray = [NSMutableArray array];
            }];
            
        });
        
        
    }
    
    -(void)changeScaleWithUIView:(UIView*)view andScaleVale:(CGFloat)scaleVale
    {
        CGAffineTransform transformGreen = CGAffineTransformMakeScale(1, 1);
        view.transform = CGAffineTransformScale(transformGreen, scaleVale, scaleVale);
    }
    

    有用的小伙伴可以拿走

    1B63094A-9886-44C6-8983-A8AFCD3D3E07.png

    相关文章

      网友评论

          本文标题:iOS 切换动画cardSlider类型

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