XLPagerTabStrip ButtonBar sticks behind Navigation Bar

ⅰ亾dé卋堺 提交于 2020-01-07 07:24:22

问题


I'm using XLPagerTabStrip in a swift 3 application, I use the default ButtonBar and everything works fine but the bar is hidden when I have a navigation bar enabled like this:

If I hide the navigation bar, it shows like this:

How do I get it below the navigation bar not behind it, because I need the navigation bar right there?

import UIKit
import XLPagerTabStrip

class DesignersController: ButtonBarPagerTabStripViewController {

override func viewDidLoad() {

    buttonBarView.backgroundColor = .white
    settings.style.buttonBarBackgroundColor = .white
    settings.style.selectedBarBackgroundColor = UIColor(netHex: 0x4a4a4a)
    settings.style.selectedBarHeight = 1
    settings.style.buttonBarItemBackgroundColor = .white
    settings.style.buttonBarItemTitleColor = UIColor(netHex: 0x8c8c8c)

    super.viewDidLoad()
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    self.navigationController?.setNavigationBarHidden(true, animated: animated)
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    //self.navigationController?.setNavigationBarHidden(false, animated: animated)
}

var isReload = false

override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {
    let child_1 = ChildExampleViewController(itemInfo: "Top")
    let child_2 = ChildExampleViewController(itemInfo: "Men")
    let child_3 = ChildExampleViewController(itemInfo: "Women")

    guard isReload else {
        return [child_1, child_2, child_3]
    }

    var childViewControllers = [child_1, child_2, child_3]

    for (index, _) in childViewControllers.enumerated(){
        let nElements = childViewControllers.count - index
        let n = (Int(arc4random()) % nElements) + index
        if n != index{
            swap(&childViewControllers[index], &childViewControllers[n])
        }
    }
    let nItems = 1 + (arc4random() % 8)
    return Array(childViewControllers.prefix(Int(nItems)))
}

override func reloadPagerTabStripView() {
    isReload = true
    if arc4random() % 2 == 0 {
        pagerBehaviour = .progressive(skipIntermediateViewControllers: arc4random() % 2 == 0, elasticIndicatorLimit: arc4random() % 2 == 0 )
    }
    else {
        pagerBehaviour = .common(skipIntermediateViewControllers: arc4random() % 2 == 0)
    }
    super.reloadPagerTabStripView()
}
}


import Foundation
import XLPagerTabStrip

class ChildExampleViewController: UIViewController, IndicatorInfoProvider {

var itemInfo: IndicatorInfo = "View"

init(itemInfo: IndicatorInfo) {
    self.itemInfo = itemInfo
    super.init(nibName: nil, bundle: nil)
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

override func viewDidLoad() {
    super.viewDidLoad()

    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false
    label.text = "XLPagerTabStrip"

    view.addSubview(label)
    view.backgroundColor = .red

    view.addConstraint(NSLayoutConstraint(item: label, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 1, constant: 0))
    view.addConstraint(NSLayoutConstraint(item: label, attribute: .centerY, relatedBy: .equal, toItem: view, attribute: .centerY, multiplier: 1, constant: -50))
}

// MARK: - IndicatorInfoProvider

func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo {
    return itemInfo
}
}

Thanks in advance.


回答1:


I just faced the same problem. Just add a CollectionView to VC in Interface Builder, and set its class to "ButtonBarView".Here Then connect its outlet with view in left panel.Like this Thats all, now buttonBar should be under NavigationBar.




回答2:


self.edgesForExtendedLayout = []

I used nib to create PagerViewController and wrote the above code within viewDidLoad()




回答3:


This helped me and works for iPhone X:

self.navigationController!.navigationBar.isTranslucent = false 


来源:https://stackoverflow.com/questions/40020666/xlpagertabstrip-buttonbar-sticks-behind-navigation-bar

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!