单元格背景像iOS7天气应用程序中的视差

如果你看看iPhone上的iOS 7天气应用程序,你会看到,当你滚动,UITableViewCells滚动的背景(每个独立于其余)。 我试图弄清楚它是如何完成的。 有任何想法吗?


答案是

-(void)scrollTable:(UIScrollView *)scrollView { float offset = _tableViewNew.contentOffset.y / _tableViewNew.frame.size.height; for (int i = 0; i <[cellTitle count]; i++) { UITableViewCell *cell = [_tableViewNew cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]; CGRect frame = CGRectMake(cell.backgroundView.frame.origin.x, offset * 50, cell.backgroundView.frame.size.width, cell.backgroundView.frame.size.height); cell.backgroundView.frame = frame; } } 

我不会称之为视差效应。 它所做的就是设置所有单元格背景相对于滚动位置的起始位置。 说你的单元格背景图像是150个单位高,你的总可滚动高度是400单位。

滚动的百分比是:

 relative scroll offset = tableView.contentOffset.Y / 400. 

每当表格视图滚动时(通过实现UIScrollViewDelegate's scrollViewDidScroll:)你可以调整单元格背景的垂直位置:

 cell background offset = relative scroll offset * 150 

为了实现scrollViewDidScroll:你需要设置UITableView's属性委托。 作为UITableView子类UIScrollView ,这个属性需要一个UIScrollViewDelegate实例。 在您的控制器中,实现scrollViewDidScroll:并将委托属性设置为您的控制器。