2017-05-04 67 views
3

我的標籤欄控制器中有三個標籤,我想在這些標籤之間切換,就像tinder使用手指觸摸切換標籤。我已經使用UISwipeGestureRecognizer做了它,但它與Tinder(約會應用程序)的滑動不完全相同。 我在Tabbar controller之一上添加了UISwipeGestureRecognizer,然後添加了更改tabbar選定索引的功能。但動畫不受手指觸摸的控制。我想要通過手指觸摸來控制滑動。使用手指划動在標籤欄控制器中更改標籤

+0

您是否嘗試過'UIPanGestureRecognizer'? – SLearner

+0

你可以建議我'TabBarControllerAnimation'方法來改變'SelectedIndex'使用手指觸摸和刷卡? –

回答

0

我有點晚了,但我發現我的ANS -

我已經創建了4個UIviewcontrollers編程,然後 創建它的一個陣列。

var views = [CareTeamTableViewController(),VFCChatQViewController(), NewAccountViewController(), ShareViewController()] 

然後我在我的主要的UIViewController

private func initMainScroll() { 
     scrollView = UIScrollView.init() 
     scrollView?.delegate = self 
     scrollView?.showsHorizontalScrollIndicator = false 
     scrollView?.isPagingEnabled = true 
     self.view.addSubview(scrollView!) 
    } 

增加了滾動視圖,然後添加視圖陣列,如:

func setupScrollView(complete:()->()) { 
     scrollView?.frame = views.first!.view.frame 
     scrollView?.contentSize = CGSize(width: CGFloat(views.count) * UIScreen.main.bounds.width, height: 0) 
     _ = views.map({ addViewToScrollView($0) }) 
     _ = views.map({ $0.view.frame.origin = CGPoint(x: CGFloat(views.index(of: $0)!) * UIScreen.main.bounds.width, y: 0) }) 
     complete() 
    } 

    func addViewToScrollView(_ viewController: UIViewController) { 
     scrollView?.addSubview(viewController.view) 
     viewController.willMove(toParentViewController: self) 
     addChildViewController(viewController) 
    } 
1

我認爲最好的方法是將所有標籤頁的視圖放在UIScrollView。你把它們放在一起。

在您的tabbarController中實現滾動視圖委託方法。 你可能需要scrollViewDidEndScrollingAnimationscrollViewDidEndDecelerating知道上查看您是當用戶停止滾動,像這樣:

let page_width=UIScreen.main.bounds.width 
let page=Int(floor((scrollView.contentOffset.x-page_width/2)/page_width)+1) 

在這裏,我想每個選項卡視圖中的尺寸與屏幕相同。

+0

這可以使用'UIPanGestureRecognizer'完成嗎? –

+0

您不需要帶有滾動視圖的UIPanGestureRecognizer。 –

+0

我在每個選項卡中有三個不同的'UIViewControllers'。因此將它們添加到'UIScrollView'將會很困難。 –