美文网首页
Cell选中 图片放大

Cell选中 图片放大

作者: 暖羊羊_d603 | 来源:发表于2018-05-08 15:13 被阅读0次

    今天给 UICollectionViewCell 添加一个点击放大图片的效果 类似button的选中高亮效果,
    放大方式:使用添加动画放大
    (1)添加手势的,手势只能创建 单击 移动分开等,还会禁止掉 didSelectItemAtIndexPath
    (2)我采用 touch相关方法 来处理---为了不用修改didSelectItemAtIndexPath 只在cell中添加相关代码即可

    采用 2 的方式
    实现功能是

    1.点击cell后 --添加动画
    
    2.手势 end/move出cell 取消动画  collectionView滑动后 也取消动画
    

    具体代码:
    手势监听

    下面调用super,是为了不影响didSelectItemAtIndexPath 等方法的调用
    (有部分没有调用super的时候,didSelectItemAtIndexPath有时候不能正常响应)
    
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
        [self addAnimationTransformScale];
        [super touchesBegan:touches withEvent:event];
    }
    
    -(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
        [self removeAnimation];
        [super touchesEnded:touches withEvent:event];
    }
    - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
        UITouch *touch=[touches anyObject];
        //取得当前位置
        CGPoint current=[touch locationInView:self];
        if (NO == [self pointInside:current withEvent:event]) {
            [self removeAnimation];
        }
        [super touchesMoved:touches withEvent:event];
    }
    // scrollview滑动或者打电话等 中断
    - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
        [self removeAnimation];
        [super touchesCancelled:touches withEvent:event];
    }
    

    添加和删除动画

    - (void)removeAnimation {
        [self.imageView.layer removeAllAnimations];
    }
    - (void)addAnimationTransformScale {
        CABasicAnimation*pulse = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
        pulse.timingFunction= [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
        pulse.duration = 0.08;
        pulse.fillMode = kCAFillModeForwards; //保留动画最后的状态
        pulse.fromValue= [NSNumber numberWithFloat:1];
        pulse.toValue= [NSNumber numberWithFloat:1.3];
        pulse.removedOnCompletion = NO;
        [self.imageView.layer addAnimation:pulse forKey:nil];
    }
    
    

    相关文章

      网友评论

          本文标题:Cell选中 图片放大

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