CarbonKit CarbonTabSwipeNavigation,视图控制器未正确对齐

Posted

技术标签:

【中文标题】CarbonKit CarbonTabSwipeNavigation,视图控制器未正确对齐【英文标题】:CarbonKit CarbonTabSwipeNavigation, Viewcontrollers not aligning correctly 【发布时间】:2016-05-23 12:55:40 【问题描述】:

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

我当前的设置我使用的是工具栏,但使用 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

然后在我的视图控制器中:

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

(红线是第二个viewcontroller的一部分)

【问题讨论】:

【参考方案1】:

尝试在主线程上设置 carbon kit 代码

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

【讨论】:

不走运,在 viewDidLoad 中调用了函数,尝试了 ViewDidLayoutSubviews 但也没有走运:( 如果您在视图中工作确实加载,那么您必须在调度异步中获取屏幕宽度 我会尝试找出其他解决方案 尝试使用线程(main&async)但这破坏了整个视图,我注意到点击选项卡没有对齐问题。【参考方案2】:

我发现了问题,由于某种原因,未对齐视图控制器的故事板中的“剪辑子视图”复选框未选中。它似乎对左侧有负面约束,导致视图错位并使视图控制器剪辑所有子视图迫使所有子视图保持在主视图控制器的范围内。

【讨论】:

【参考方案3】:

如果您通过故事板设置视图控制器。将容器视图的约束设置为 - 将中心 x 与 superview 对齐 - 与超级视图等宽(如果您的容器视图等于超级视图)。

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

【讨论】:

【参考方案4】:

您可以设置其段的宽度:

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

【讨论】:

以上是关于CarbonKit CarbonTabSwipeNavigation,视图控制器未正确对齐的主要内容,如果未能解决你的问题,请参考以下文章

CarbonKit CarbonTabSwipeNavigation,视图控制器未正确对齐

谁能告诉我如何删除 CarbonKit 中的深灰色底边边框

如何为 carbonTabSwipeNavigation CarbonKit Cocoapods 设置颜色渐变

Swift 5 CarbonKit pod 如何设置 x 轴并使 Pager 的背景颜色清晰

UIImageViewcornerRadius 没有使它成为圆形[重复]

Swift:为 CustomTab 重用一个 ViewController