123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- //
- // ZLCellFakeView.m
- // ZLCollectionView
- //
- // Created by zhaoliang chen on 2018/7/25.
- // Copyright © 2018年 zhaoliang chen. All rights reserved.
- //
- #import "ZLCellFakeView.h"
- @implementation ZLCellFakeView
- - (instancetype)initWithCell:(UICollectionViewCell *)cell{
- self = [super initWithFrame:cell.frame];
- if (self) {
- self.cell = cell;
-
- self.layer.shadowColor = [UIColor blackColor].CGColor;
- self.layer.shadowOffset = CGSizeMake(0, 0);
- self.layer.shadowOpacity = 0;
- self.layer.shadowRadius = 5.0;
- self.layer.shouldRasterize = false;
- self.layer.masksToBounds = YES;
- self.clipsToBounds = YES;
-
- self.cellFakeImageView = [[UIImageView alloc]initWithFrame:self.bounds];
- self.cellFakeImageView.contentMode = UIViewContentModeScaleAspectFill;
- self.cellFakeImageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
-
- self.cellFakeHightedView = [[UIImageView alloc]initWithFrame:self.bounds];
- self.cellFakeHightedView.contentMode = UIViewContentModeScaleAspectFill;
- self.cellFakeHightedView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
-
- cell.highlighted = YES;
- self.cellFakeHightedView.image = [self getCellImage];
- cell.highlighted = NO;
- self.cellFakeImageView.image = [self getCellImage];
-
- [self addSubview:self.cellFakeImageView];
- [self addSubview:self.cellFakeHightedView];
-
- }
-
- return self;
- }
- - (void)changeBoundsIfNeeded:(CGRect)bounds{
- if (CGRectEqualToRect(self.bounds, bounds)) {
- return;
- }
- [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionBeginFromCurrentState animations:^{
- self.bounds = bounds;
- } completion:nil];
- }
- - (void)pushFowardView{
- [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionBeginFromCurrentState animations:^{
- self.center = self.originalCenter;
- self.transform = CGAffineTransformMakeScale(1.1, 1.1);
- self.cellFakeHightedView.alpha = 0;
-
- CABasicAnimation *shadowAnimation = [CABasicAnimation animationWithKeyPath:@"shadowOpacity"];
- shadowAnimation.fromValue = @(0);
- shadowAnimation.toValue = @(0.7);
- shadowAnimation.removedOnCompletion = NO;
- shadowAnimation.fillMode = kCAFillModeForwards;
- [self.layer addAnimation:shadowAnimation forKey:@"applyShadow"];
- } completion:^(BOOL finished) {
- [self.cellFakeHightedView removeFromSuperview];
- }];
- }
- - (void)pushBackView:(void(^)(void))completion{
- [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionBeginFromCurrentState animations:^{
- //self.transform = CGAffineTransformIdentity;
- //self.frame = self.cellFrame;
- CABasicAnimation *shadowAnimation = [CABasicAnimation animationWithKeyPath:@"shadowOpacity"];
- shadowAnimation.fromValue = @(0.7);
- shadowAnimation.toValue = @(0);
- shadowAnimation.removedOnCompletion = NO;
- shadowAnimation.fillMode = kCAFillModeForwards;
- [self.layer addAnimation:shadowAnimation forKey:@"removeShadow"];
- } completion:^(BOOL finished) {
- if (completion) {
- completion();
- }
- }];
- }
- - (UIImage *)getCellImage{
- UIGraphicsBeginImageContextWithOptions(_cell.bounds.size, NO, [UIScreen mainScreen].scale * 2);
-
- [self.cell.layer renderInContext:UIGraphicsGetCurrentContext()];
-
- UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- return image;
- }
- @end
|