如何实现选项卡式页面控件

时间:2015-02-20 16:48:04

标签: ios objective-c iphone uiscrollview

我想采用类似于Beats Music应用程序的标签式滑动页面控件,其中两个相关滚动视图相互交互以浏览页面。在动画开始时,我在实际页面上向左滑动。当它滚动得非常快时,我实际上是在上面滚动标签。这与iOS 7/8的多任务应用程序切换器的工作方式类似。

我环顾四周,但找不到用户可以滚动两个滚动视图的示例。通常只是内容控制器移动选项卡,就像在此repo中一样:https://github.com/daria-kopaliani/DAPagesContainer

我对自己如何实现这一点感到有点迷茫。我不能只在容器上放置两个scrollview,并在两个scrollviews上实现scrollViewDidScroll,因为这会创建一个循环。

有什么想法吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以设置BOOL或标记来标识用户拖动的滚动视图的用户,并通过这样做来控制其他滚动视图而不会来回循环。

- (void)viewDidLoad {
    [super viewDidLoad];
    self.topScrollView.tag = 1;
    self.contentScrollView.tag = 2;
}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    self.scrollViewInControler = scrollView.tag;
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if(scrollView.tag == self.scrollViewInControler && scrollView.tag == 1)
    {
        //move contentScrollView accordingly
    }
    else //...

}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView
                  willDecelerate:(BOOL)decelerate
{
    self.scrollViewInControler = 0;
}

我确信有办法完善这个,但这是主要的想法。