首页 > 代码库 > iOS下用一行代码实现tableview(collectionview)的parallax效果
iOS下用一行代码实现tableview(collectionview)的parallax效果
效果和https://github.com/jberlana/JBParallaxCell一样。实现cell的滚动视差。
原理很简单,就是一个等比公式
cell的图片位置 / cell图片可以滑动的总长 = cell在table中的位置 / cell 可滑动总长
实现方法:
1》 在cell的UIImageView上添加父视图UIView,clipsToBounds设置为yes,用来剪切UIImageView,为其限定大小。
2》在vc的
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
中实时更新每个cell的图片位置。
代码如下
-(void)scrollViewDidScroll:(UIScrollView *)scrollView { for(WELTableViewCell * cell in [self.tableView visibleCells]) { cell.image.frame = CGRectOffset(cell.image.frame, 0, ((cell.image.frame.size.height - cell.imageFrameView.frame.size.height) * ((cell.frame.origin.y + cell.imageFrameView.frame.size.height - self.tableView.contentOffset.y) / (self.tableView.frame.size.height + cell.imageFrameView.frame.size.height * 2)) + cell.imageFrameView.frame.size.height - cell.image.frame.size.height) - cell.image.frame.origin.y); } }
PS:确实是一行代码,哈哈。其实一行代码只是一个噱头,完全可以多写几行增加可读性。之所以写一行代码,是想表达这个效果其实蛮简单的。用算式算出偏移量,重设frame。
3》在tableView初次刷新完毕后,调用
[selfscrollViewDidScroll:nil];
例如
-(void)viewDidAppear:(BOOL)animated
{
[superviewDidAppear:YES];
[selfscrollViewDidScroll:nil];
}
最后,附上源代码demo(发帖不易,讨个积分,哈哈)
简单demo(附注释)
以上
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。