3

我的iPhone 上有CNN 应用程序。

如果你打开它会显示“头条新闻”,并且在表格的顶部总是有一张图片。

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

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

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

4

3 回答 3

1

您需要UIImageViewUIScrollView 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);

之后像这样设置UIScrollViewcontentOffset

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

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

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

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

于 2012-11-14T10:43:41.567 回答
0

这似乎是一个完全自定义的效果,您必须自己实现。为了给你指明正确的方向,我首先会监控你的实例发送contentOffset的消息的变化,当,通过改变你的 imageView 的比例scrollViewDidScroll:myTableViewcontentOffset.y < 0

[myImageView setValue:[NSNumber numberWithFloat:scaleIncrementAmountFloat] forKeyPath:@"transform.scale"];
于 2012-11-13T22:03:17.990 回答
0

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

由于 table view 继承自 UIScrollView,它的委托 (UITableViewDelegate) 继承自 UIScrollViewDelegate 协议,当用户滚动滚动视图时会通知该协议。实现- (void)scrollViewDidScroll:(UIScrollView *)scrollView接收这些通知的方法并检查contentOffset滚动视图上的属性。

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

于 2012-11-13T22:11:17.263 回答