现在很多轮播图都带有视差效果。
介绍一种图视差效果的实现效果如下:
细心观察就会发现 cell.contentView.center 位于 cell在屏幕上可见区域的中心点,对于scrollowView也是如此。
代码也很简单(这里是基于table实现的,scrollView同理):
NSArray *arr = scrollview.visibleCells;
for (UITableViewCell* cell in arr) {
CGRect rect = [cell convertRect:cell.bounds toView:self];
CGFloat w = CGRectGetWidth(cell.bounds);
CGFloat cx;
if (rect.origin.x>0) {
cx = (w - rect.origin.x)/2.0;
}else{
cx = w - (w + rect.origin.x)/2.0;
}
cell.contentView.center = CGPointMake(cx, cell.contentView.center.y);
}
视差效果代码在【scrollViewDidScroll:】代理内执行。