带有滑动效果的Tabbar控制器

时间:2013-06-25 04:51:00

标签: iphone ios uiviewcontroller uitabbarcontroller

我正在尝试使用Tabbar控制器,如下效果:

image

通过滑动视图控制器将重定向到下一个选项卡。我们如何在iOS中实现这一目标?是否有其他控件可以这样做?

4 个答案:

答案 0 :(得分:2)

只需将UISwipeGestureRecognizer添加到tabBarView控制器,然后在滑动后更改tabBar索引。

swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self 
                                                                      action:@selector(swipeMethod:)];
swipeRecognizer.direction = UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft; 
[self addGestureRecognizer:swipeRecognizer];  

我处理滑动的方法是:

-(void)swipeMethod: (UISwipeGestureRecognizer *) sender
{
    NSLog(@"Swipe!");   
} 

修改
或者,您可以将UIScrollView与分页启用和UIView一起使用来显示您的数据。

以下是您正在寻找Tabbar Controller with swipte effect

的教程

答案 1 :(得分:1)

在GitHub上有一个库,它被称为MGSwipeTabBarController,旨在完全满足您的需求。

这很简单:

NSArray *viewControllers = . . . //your view controllers
MGSwipeTabBarController *swipeController = [[MGSwipeTabBarController alloc] initWithViewControllers:viewControllers]; 

请注意,它仅与iOS7和+兼容,您仍然需要设计自己的标签栏,以使用MGSwipeTabBarControllerDelegate协议响应滚动事件。

https://github.com/mglagola/MGSwipeTabBarController

答案 2 :(得分:0)

https://github.com/nicklockwood/SwipeView 你可以用这个课来实现你的目标......

或者你必须使用以下方法制作动画以点击标签栏

[UIView transitionFromView:<#(UIView *)#> toView:<#(UIView *)#> duration:<#(NSTimeInterval)#> options:<#(UIViewAnimationOptions)#> completion:<#^(BOOL finished)completion#>]

答案 3 :(得分:-1)

如果有人还在寻找,您可以在此youtube系列上找到其他实现方式

https://www.youtube.com/watch?v=3Xv1mJvwXok&list=PL0dzCUj1L5JGKdVUtA5xds1zcyzsz7HLj

编辑:

  1. 因此,据我所知,根据视频,您的想法是在一个视图控制器中使用两个UICollectionViews。一个集合视图用于显示内容(应用程序),另一个视图用于包含类别的水平导航。

  2. 要创建绿色的“突出显示”栏,可以使用UIView,并使用constraints - heightAnchor/widthAnchor调整栏的高度/宽度,然后将其添加到导航栏。

  3. 要使条形图随着用户滑动的距离移动,有一种方法可以覆盖scrollViewDidScroll来捕获水平滚动。从这里开始,您将需要根据UIView的约束(类型为NSLayoutConstraint)提供一个变量,以能够更新UIView

    的x位置
    override func scrollViewDidScroll(_ scrollView: UIScrollView) 
    {
        print(scrollView.contentOffset.x)
        menuBar.myGreenBarLeftConstraint.constant = scrollView.contentOffset.x / 4 
        //or however many categories you have
    }