CarbonKit CarbonTabSwipeNavigation,Viewcontrollers无法正确对齐

时间:2016-05-23 12:55:40

标签: ios swift uitableview uiviewcontroller uicollectionview

我正在使用Carbonkit的CarbonMabSwipeNavigation by ermalkaleci,当视图加载时,视图控制器正确对齐,然后当切换到第二个视图控制器时,第二个视图控制器的对齐是正确的但是当滚动回到第一个viewcontroller,它对齐错误,第二个viewcontroller的一小部分是可见的。尝试了我能找到的一切但到目前为止没有运气。

我当前的设置我使用工具栏但使用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 (红线是第二个视图控制器的一部分)

4 个答案:

答案 0 :(得分:0)

尝试在主线程上设置碳纤维试剂盒代码

in

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)
})

答案 1 :(得分:0)

我发现了问题,由于某些原因,未对齐的viewcontroller的故事板中未选中“剪辑子视图”复选框。它似乎对左侧有一个负面约束,导致视图错误分配,并使viewcontroller剪辑所有子视图强制所有子视图保持在主视图控制器的边界。

答案 2 :(得分:0)

如果要通过storyboard设置viewcontroller。请将容器视图的约束设置为   - 将中心x与超级视图对齐   - 与superview相等的宽度(如果您的容器视图等于superview)。

避免设置前导和尾随约束。移除这两个约束可以解决问题。

答案 3 :(得分:0)

您可以设置其细分的宽度:

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