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

2024-03-31

如果您查看 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(使用前将#替换为@)

单元格背景视差就像 iOS7 天气应用程序中一样 的相关文章

随机推荐