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

我的iPhone上有CNN应用程序 。

如果你打开它会显示“顶级故事”,并始终在桌面上的图片。

当我们向下滑动手指时,它将放大/缩小图像。

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

你知道如何做到这一点?

你需要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。

这个build议你也可以应用到UITableView类似的方式,或者在UIScrollView上创build类别。

我也build议你阅读这个项目的代码https://github.com/samvermette/SVPullToRefresh 。 这也是关于UITableView和添加视图到顶端

这似乎是一个完全自定义的效果,你将不得不实现自己。 为了指向正确的方向,我首先监视scrollViewDidScroll: contentOffset更改scrollViewDidScroll:scrollViewDidScroll:实例发送的消息,以及contentOffset.y < 0 ,通过更改scrollViewDidScroll:的比例

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

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

由于表视图inheritance自UIScrollView,所以它的委托(UITableViewDelegate)从用户滚动滚动视图时得到通知的UIScrollViewDelegate协议inheritance。 实现- (void)scrollViewDidScroll:(UIScrollView *)scrollView方法来接收这些通知,并检查滚动视图的contentOffset属性。

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