iOS-仿奇鱼旅行app视觉差(parallax)动画

demo.gif

如图,动画不清楚,看效果请移步github下载
swift版本
OC版本

原理:监听cell的滚动,对屏幕区域内可见cell内部图片设置偏移差

cell设置

// 宏定义图片高度
#define IMAGE_HEIGHT 200
// 宏定义图片偏移速度
#define IMAGE_OFFSET_SPEED 25

/*
 
 image used in the cell which will be having the parallax effect
 
 */
@property (nonatomic, strong, readwrite) UIImage *image;
/*
 Image will always animate according to the imageOffset provided. Higher the value means higher offset for the image
 */
@property (nonatomic, assign, readwrite) CGPoint imageOffset;
# pragma mark - Setters

- (void)setImage:(UIImage *)image
{
    // Store image
    self.MJImageView.image = image;
    
    // Update padding
    [self setImageOffset:self.imageOffset];
}

- (void)setImageOffset:(CGPoint)imageOffset
{
    // Store padding value
    _imageOffset = imageOffset;
    
    // Grow image view
    CGRect frame = self.MJImageView.bounds;
    CGRect offsetFrame = CGRectOffset(frame, _imageOffset.x, _imageOffset.y);
    self.MJImageView.frame = offsetFrame;
}

核心方法

在控制器中监听cell滚动,遍历屏幕中可见cell,不停的设置cell中图片的offset

#pragma mark - UIScrollViewdelegate methods
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    for(MJCollectionViewCell *view in self.parallaxCollectionView.visibleCells) {
        CGFloat yOffset = ((self.parallaxCollectionView.contentOffset.y - view.frame.origin.y) / IMAGE_HEIGHT) * IMAGE_OFFSET_SPEED;
        view.imageOffset = CGPointMake(0.0f, yOffset);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,142评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,195评论 4 61
  • 有一天,小乌龟、小兔子和小松鼠约好了一起去动物图书馆看书。 下午,它们各自找到自己喜欢的书,坐到登子上...
    浅浅的简书阅读 3,616评论 0 0
  • 第五天 10月28日 1.今天觉察自己的状态是否在防御机制体现(三号自居等同,六号向外投射),三号总不自觉刻意或者...
    hxz396阅读 2,615评论 1 1
  • 好多妈妈是不是在感慨自己天天扑腾得一地鸡毛,旁边还有个人躺沙发上抱着手机时不时地嘿嘿傻笑。所以每次看见老公总是冒火...
    舒亦卷阅读 2,865评论 0 2