cyndibaby905 / GIFRefreshControl

"Twitter music" and "Yahoo! Weather" like pull-to-refresh control created using GIF.
MIT License
289 stars 41 forks source link

问题 #1

Closed xhzengAIB closed 10 years ago

xhzengAIB commented 10 years ago

@cyndibaby905 您好! 您好!你有兴趣破解网易新闻的主页框架嘛?细节有一下几个: 1、重用了tableView(三个tableView重用嵌套在一个水平滑动的UIScrollView中,实现无数TableView内容页的水平滑动) 2、快速滑动只显示logo,而不显示tableVIew(水平滑动UIScrollView的时候,tableView不会显示,因为这样能提高用户的快速滑动的体验) 3、并且很好的把pangesture传递给下一个接收gesture的响应者(因为网易新闻还有另外一个框架就是左右侧滑,是通过手势来控制的,所以两者有出冲突,左右侧滑的手势接受方法需要在UIScrollView本身的pangesture传递过来,才能完成侧滑效果)

我看了您很多的作品,你对UIScrollView这个控件非常熟悉,而且很精通,希望能得到您的帮助和支持。谢谢!

这是我的个人github地址:https://github.com/xhzengAIB、https://github.com/JackTeam ,我主要是为了开源多一点组件,帮助我们苦逼的程序员,而且能有向您多学习的机会。

Jack

cyndibaby905 commented 10 years ago

@xhzengAIB 我看了一下网易新闻,觉得这个框架不复杂啊。我给你简单的说几个关键的实现步骤吧: 1.继承一个UIViewController,命名为NetEaseContainerController,用它来做N个子viewController的容器。

for (UIViewController *viewController in _viewControllers)
{
    [self addChildViewController:viewController];
    [viewController didMoveToParentViewController:self];
}

2.把一个UIScrollView加到NetEaseContainerControllerview上,然后依次把所有的子viewControllerview都加到这个UIScrollView上。

3.自定义一个UIGestureRecognizer,加到UIScrollView上,这个UIGestureRecognizer只有在UIScrollViewcontentOffset.x小于等于0或大于等于contentSize.width - bounds.bounds.size.width的时候才去响应, 你可以在触发这个手势的方法里去唤起sideBar(网易新闻这一点上做得有点糙,他们是在contetOffset.x满足这个条件的情况下,下次手势才会触发sideBar)。

具体我就不去实现了。

cyndibaby905 commented 10 years ago

No other issues, closed.

xhzengAIB commented 10 years ago

@cyndibaby905 你好!其实不是这样的,因为需要响应ViewDidApear will等等,你说的那个会直接相应全部ViewController的,并且没有重用ViewController,所以效率不高,如果新闻的分类超过1W个,我是假如这样,内存就会发生很大的改变,导致carsh,如果您没空,那我就不破解吧!我个人技术做不到网易那样的体验和机制。谢谢你的回答 Jack

cyndibaby905 commented 10 years ago

@xhzengAIB 如果你要响应viewDidAppear之类的话,那就不需要把全部的子viewControllerview加进去,只加对应当前UIScrollViewcontentOffset.xviewController和左右两个view就可以了,在滚动的时候再去addSubviewremoveSubview。只要设好了parentViewControllerchildViewController 的对应关系,addSubviewremoveSubview这两个方法会唤起响应子viewControllerviewDidAppearviewWillAppear方法的。 建议看一下 https://github.com/hollance/MHTabBarController 的实现

xhzengAIB commented 10 years ago

@cyndibaby905 这其中的机制,我始终还是不太明白,希望您能带带我呗!毕竟你是新浪的开发者,经验比我好上一百倍,自己摸索真的有点难度。

xhzengAIB commented 10 years ago

@cyndibaby905 您好!您真的抽不出时间来教教我嘛?我很想跟你学习哇! Jack