我正在尝试使用Tabbar控制器,如下效果:
通过滑动视图控制器将重定向到下一个选项卡。我们如何在iOS中实现这一目标?是否有其他控件可以这样做?
答案 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
一起使用来显示您的数据。
答案 1 :(得分:1)
在GitHub上有一个库,它被称为MGSwipeTabBarController,旨在完全满足您的需求。
这很简单:
NSArray *viewControllers = . . . //your view controllers
MGSwipeTabBarController *swipeController = [[MGSwipeTabBarController alloc] initWithViewControllers:viewControllers];
请注意,它仅与iOS7和+兼容,您仍然需要设计自己的标签栏,以使用MGSwipeTabBarControllerDelegate
协议响应滚动事件。
答案 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
编辑:
因此,据我所知,根据视频,您的想法是在一个视图控制器中使用两个UICollectionViews
。一个集合视图用于显示内容(应用程序),另一个视图用于包含类别的水平导航。
要创建绿色的“突出显示”栏,可以使用UIView
,并使用constraints - heightAnchor/widthAnchor
调整栏的高度/宽度,然后将其添加到导航栏。
要使条形图随着用户滑动的距离移动,有一种方法可以覆盖scrollViewDidScroll
来捕获水平滚动。从这里开始,您将需要根据UIView
的约束(类型为NSLayoutConstraint
)提供一个变量,以能够更新UIView
override func scrollViewDidScroll(_ scrollView: UIScrollView)
{
print(scrollView.contentOffset.x)
menuBar.myGreenBarLeftConstraint.constant = scrollView.contentOffset.x / 4
//or however many categories you have
}