首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS框架XLPagerTabStrip不能正常工作

iOS框架XLPagerTabStrip不能正常工作
EN

Stack Overflow用户
提问于 2019-12-04 09:31:46
回答 1查看 610关注 0票数 0

我正在使用XLPagerTabStrip来获取具有类似于安卓的ViewPager类型行为的TabBar。我已经按照他们的github回购文档指南进行了配置,但就我的情况而言,它在我的模拟器iPhone11 Pro max和真正的设备iPhone 6+上有一种奇特的行为。选项卡条在选择最后一个选项卡时会滚动一点,尽管不需要滚动。在iPhone 6中,它显示单个选项卡的全屏。我正在附加代码和截图。任何帮助都是有价值的。谢谢,,这是我的代码

代码语言:javascript
复制
class TalkRoomPagerViewController: BaseButtonBarPagerTabStripViewController<PagerTabCell>, StoryboardBased, ViewModelBased {

    var viewModel: TalkRoomPagerViewModel!
    private let bag = DisposeBag()

    private var allTalkRoom: TalkRoomListViewController {
        let viewModel = TalkRoomListViewModel(type: .all,
                                              filteredTalkroomWithPreferenceLists: self.viewModel.allTalkRoomWithPreferenceLists,
                                              requestPreferenceUpdate: self.viewModel.requestPreferenceUpdate,
                                              pagerTabIndex: self.viewModel.pagerTabIndexSubject.asObserver())
        let services = TalkroomListServices(chatRoomNetwork: ChatRoomNetwork())
        let viewController = TalkRoomListViewController.instantiate(withViewModel: viewModel, andServices: services)
        return viewController
    }
    private var siteTalkRoom: TalkRoomListViewController {
        let viewModel = TalkRoomListViewModel(type: .site,
                                              filteredTalkroomWithPreferenceLists: self.viewModel.siteTalkRoomWithPreferenceLists,
                                              requestPreferenceUpdate: self.viewModel.requestPreferenceUpdate)
        let services = TalkroomListServices(chatRoomNetwork: ChatRoomNetwork())
        let viewController = TalkRoomListViewController.instantiate(withViewModel: viewModel, andServices: services)
        return viewController
    }
    private var companyTalkRoom: TalkRoomListViewController {
        let viewModel = TalkRoomListViewModel(type: .company,
                                              filteredTalkroomWithPreferenceLists: self.viewModel.companyTalkRoomWithPreferenceLists,
                                              requestPreferenceUpdate: self.viewModel.requestPreferenceUpdate)
        let services = TalkroomListServices(chatRoomNetwork: ChatRoomNetwork())
        let viewController = TalkRoomListViewController.instantiate(withViewModel: viewModel, andServices: services)
        return viewController
    }
    private var groupTalkRoom: TalkRoomListViewController {
        let viewModel = TalkRoomListViewModel(type: .group,
                                              filteredTalkroomWithPreferenceLists: self.viewModel.groupTalkRoomWithPreferenceLists,
                                              requestPreferenceUpdate: self.viewModel.requestPreferenceUpdate)
        let services = TalkroomListServices(chatRoomNetwork: ChatRoomNetwork())
        let viewController = TalkRoomListViewController.instantiate(withViewModel: viewModel, andServices: services)
        return viewController
    }

    public var steppers: [Stepper] {
        return [viewModel, allTalkRoom.viewModel, siteTalkRoom.viewModel, companyTalkRoom.viewModel, groupTalkRoom.viewModel]
    }

    override func viewDidLoad() {
        self.prepareUI()
        self.configureNavigationBar()
        super.viewDidLoad()
        bindViewModel()

    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        viewModel.requestTalkRoomList.onNext(())
        viewModel.requestPreferenceList.onNext(())
        viewModel.locationFilter.accept(PersistenceManager.shared.savedFilterLocation)
    }

    func bindViewModel() {
        viewModel.pagerTabIndexSubject.subscribe(onNext: { (index) in
            self.moveToViewController(at: index, animated: true)
        })
            .disposed(by: bag)

        viewModel.preferenceUpdateResponse.subscribe(onNext: { [weak self] _ in
            self?.viewModel.requestTalkRoomList.onNext(())
            self?.viewModel.requestPreferenceList.onNext(())
        })
            .disposed(by: bag)
    }

    private func prepareUI() {
        self.title = "トークルーム一覧"
        buttonBarView.isScrollEnabled = false
        buttonBarItemSpec = ButtonBarItemSpec.nibFile(nibName: "PagerTabCell", bundle: Bundle(for: PagerTabCell.self)) { _ in
            return self.view.frame.width/4
        }
        settings.style.buttonBarBackgroundColor = .white
        settings.style.buttonBarItemBackgroundColor = .white
        settings.style.selectedBarBackgroundColor = Asset.duskBlue.color
        settings.style.selectedBarHeight = 2.0
        settings.style.buttonBarMinimumLineSpacing = 0
        settings.style.buttonBarItemTitleColor = .black
        settings.style.buttonBarLeftContentInset = 0
        settings.style.buttonBarRightContentInset = 0

        changeCurrentIndexProgressive = { (oldCell: PagerTabCell?, newCell: PagerTabCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in
            guard changeCurrentIndex == true else { return }
            oldCell?.titleLabel.textColor = .black
            newCell?.titleLabel.textColor = Asset.duskBlue.color
        }
    }

    private func configureNavigationBar() {
        self.addBarItem(position: .left, title: "編集", target: self, action: #selector(editButtonTapped))
        self.addBarItem(position: .right, image: Asset.iconPlus.image, target: self, action: #selector(addButtonTapped))
    }

    @objc private func editButtonTapped() {

    }

    @objc private func addButtonTapped() {
        self.viewModel.navigateToCreateTalkRoom()
    }

    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {
        return [allTalkRoom, siteTalkRoom, companyTalkRoom, groupTalkRoom ]
    }

    override func configure(cell: PagerTabCell, for indicatorInfo: IndicatorInfo) {
        cell.iconImageView.image = indicatorInfo.image?.withRenderingMode(.alwaysOriginal)
        cell.titleLabel.text = indicatorInfo.title

    }

}

EN

回答 1

Stack Overflow用户

发布于 2019-12-04 10:16:11

  1. 我不知道您的代码中有什么问题,但是我使用了XLPagerTabStrip &遇到了同样的问题。他们没有什么文件。我从Github下载他们的示例代码。我只是复制粘贴他们的视图控制器从故事板和代码。在那之后,我会根据我的需求来修改它。
  2. 如果您正在使用Xcode 11或以上,然后检查您的应用程序的光模式和黑暗模式的能力。如果你的应用程序是完全在光模式,然后提供黑暗模式支持。我希望这对你有帮助。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59172752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档