2016-05-23 92 views
3

我使用的是由ermalkaleci的Carbonkit的CarbonTabSwipeNavigation,當視圖加載時,視圖控制器正確對齊,然後切換到第二個視圖控制器時,第二個視圖控制器的對齊正確,但是當滾動回到第一個視圖控制器,它對齊錯誤,第二個視圖控制器的一小部分是可見的。嘗試了我能找到的所有東西,但迄今爲止沒有運氣。我使用的是工具欄,但相同的行爲CarbonKit CarbonTabSwipeNavigation,Viewcontrollers未正確對齊

我的當前設置與insertIntoRootViewController插入時:(

class func setupCarbonPages(carbonSwipeTabsItem:CarbonTabSwipeNavigation,tabTitles:[String],totalWidth: CGFloat) -> CarbonTabSwipeNavigation{ 

    // Setup the default style 
    carbonSwipeTabsItem.toolbar.translucent = false 
    carbonSwipeTabsItem.setIndicatorColor(AppConfig.BLUECOLOR) 
    carbonSwipeTabsItem.setNormalColor(AppConfig.BLUECOLOR) 
    carbonSwipeTabsItem.setSelectedColor(AppConfig.BLUECOLOR, font: UIFont.boldSystemFontOfSize(14)) 
    carbonSwipeTabsItem.setTabExtraWidth(CGFloat(0)) 
    carbonSwipeTabsItem.setNormalColor(AppConfig.BLUECOLOR, font: AppConfig.REGULAR_FONT_16) 
    carbonSwipeTabsItem.setSelectedColor(AppConfig.BLUECOLOR, font: AppConfig.REGULAR_FONT_16) 

    // Assign tab width & preload all data 
    let menuTabItems:UInt = UInt(tabTitles.count) 
    let tabWidth = (totalWidth/CGFloat(menuTabItems)) 
    for index:UInt in 0 ..< menuTabItems { 
     carbonSwipeTabsItem.carbonSegmentedControl!.setWidth(tabWidth, forSegmentAtIndex: Int(index)) 
    } 

    return carbonSwipeTabsItem 
} 

然後在我的ViewController:

private func setupSwipableTabs(){ 
    let width = self.view.frame.width 

    carbonTabSwipeNavigation = CarbonTabSwipeNavigation(items: menuTabTitles as [AnyObject], toolBar: self.toolBar,delegate: self) 
    Helper.setupCarbonPages(carbonTabSwipeNavigation, tabTitles: menuTabTitles, totalWidth: self.view.frame.width).insertIntoRootViewController(self) 
    Helper.preloadCarbonPages(carbonTabSwipeNavigation, tabs: 2) 
} 

庫:https://github.com/ermalkaleci/CarbonKit

Problem (紅線是第二個視圖控制器的一部分)

回答

0

我發現這個問題,因爲某些原因「剪輯子視圖」複選框是在錯位的ViewController的故事板聽之任之。它似乎對左側有一個負面約束是什麼導致視圖錯誤並使viewcontroller剪輯所有子視圖強制所有子視圖留在主視圖控制器的邊界。

0

嘗試設置在主線程

碳包代碼

dispatch_async(dispatch_get_main_queue(), { 
    let width = self.view.frame.width 

    carbonTabSwipeNavigation = CarbonTabSwipeNavigation(items: menuTabTitles as [AnyObject], toolBar: self.toolBar,delegate: self) 
    Helper.setupCarbonPages(carbonTabSwipeNavigation, tabTitles: menuTabTitles, totalWidth:   self.view.frame.width).insertIntoRootViewController(self) 
    Helper.preloadCarbonPages(carbonTabSwipeNavigation, tabs: 2) 
}) 
+0

沒有運氣,函數被調用viewDidLoad中,試圖ViewDidLayoutSubviews而且,沒有運氣:( –

+0

如果您在視圖中工作負載做了,那麼你必須得到屏幕寬度在調度async –

+0

我會嘗試找出一些其他的解決方案 –

0

如果通過storyboard.Set的容器​​視圖的約束建立視圖控制器作爲 - 對齊中心x上海華 - 寬度相等,以上海華(如果你的容器視圖等於上海華)。

避免設置前導約束和尾隨約束。刪除這兩個約束解決了問題。

0

你可以設置其細分市場的寬度:

carbonTabSwipeNavigation.carbonSegmentedControl?.setWidth(widthItem, forSegmentAt: 0)