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

时间:2014-03-03 13:07:42

标签: ios uitableview

如果您查看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;
    }
}

1 个答案:

答案 0 :(得分:2)

我不会称之为视差效应。它所做的就是设置所有单元格背景相对于滚动位置的起始位置。假设您的单元格背景图像高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:并将delegate属性设置为您的控制器。