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,视图控制器未正确对齐
如何为 carbonTabSwipeNavigation CarbonKit Cocoapods 设置颜色渐变
Swift 5 CarbonKit pod 如何设置 x 轴并使 Pager 的背景颜色清晰