如何在CNN应用程序中扩展UITableView上的图像

时间:2012-11-13 21:28:33

标签: ios objective-c uitableview

我的iPhone上有CNN app

如果你打开它会显示"热门故事",并且总是在桌面顶部有一张图片。

当我们向下滑动手指时,它会扩展/缩放图像。

当我们向上滑动手指以显示更多行时,它不会以相同的速度向上移动图像而不是表格行而不是表格行移动得比离开屏幕的图片更快。

你知道怎么做这个效果吗?

3 个答案:

答案 0 :(得分:1)

您需要 UIImageView UIScrollView contentInset ,并将顶部插入设置为大于零。

UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

UIImage *topImage = [UIImage imageNamed:@"photo"];
topImage.frame = CGRectMake(0, -topImage.frame.size.height, topImage.frame.size.width, topImage.frame.size.height);
[scroll addSubview:topImage];

self.contentInset = UIEdgeInsetsMake(topImage.frame.size.height, 0, 0, 0);

之后设置 UIScrollView contentOffset 就像这样

scroll.contentOffset = CGPointMake(0, topImage.frame.size.height);

所以你有 UIScrollView ,里面有图片。现在您只需要将委托添加到UIScrollView并等待- (void)scrollViewDidScroll:(UIScrollView *)scrollView。在调用此方法之后立即调整图像大小并更改contentInset。

此建议您也可以类似的方式应用于 UITableView ,或者在 UIScrollView 上创建类别。

我还建议您阅读此项目的代码https://github.com/samvermette/SVPullToRefresh。它也是关于 UITableView 并将视图添加到它的顶端

答案 1 :(得分:0)

这似乎是一种完全自定义的效果,您必须自己实现。为了指出正确的方向,我首先监控contentOffset个实例发送的scrollViewDidScroll:邮件中的myTableView次更改,并在contentOffset.y < 0时更改imageView的缩放视图

[myImageView setValue:[NSNumber numberWithFloat:scaleIncrementAmountFloat] forKeyPath:@"transform.scale"];

答案 2 :(得分:0)

我的猜测是,tableview的顶部单元格(或单元格)是透明的,并且在tableview后面有一个UIImageView,它根据表格视图的滚动方式调整大小/移动。

由于表视图继承自UIScrollView,因此其委托(UITableViewDelegate)继承自UIScrollViewDelegate协议,该协议在用户滚动滚动视图时得到通知。实现- (void)scrollViewDidScroll:(UIScrollView *)scrollView方法以接收这些通知并检查滚动视图上的contentOffset属性。

您可能必须实现自己的表视图控制器,才能在界面构建器中构建所需的UI。