如果您查看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;
}
}
答案 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属性设置为您的控制器。