如果您查看 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 https://developer.apple.com/library/ios/documentation/uikit/reference/UIScrollViewDelegate_Protocol/Reference/UIScrollViewDelegate.html#//apple_ref/occ/intf/UIScrollViewDelegate实例。在您的控制器中,实施scrollViewDidScroll:
并将 delegate 属性设置为您的控制器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)