gpt4 book ai didi

ios - 如何在 swift 3.0 中使用自定义 UI 创建标签栏

转载 作者:可可西里 更新时间:2023-11-01 05:07:36 24 4
gpt4 key购买 nike

我想从 Storyboard 中创建一个标签栏,我创建了它,但是当时点击标签栏时图像没有显示,一些图像我想要像标签栏一样 I want like this tabbar

我明白了

i got this

我点击任何标签栏项目时它的显示像

wrong output

这是我在配置文件 View Controller 中使用的代码

class ProfileViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.statusBarStyle = .default

self.tabBarController?.tabBar.isHidden = false
UITabBar.appearance().tintColor = UIColor.init(patternImage: UIImage.init(named: "ic_home_tab_profile_sel.png")!)
// Do any additional setup after loading the view.
}
}

任何帮助都将不胜感激。提前致谢。

最佳答案

我建议使用ESTabBarControllerExample https://github.com/eggswift/ESTabBarController制作那种自定义 TabbarController。首先从 github 下载 ESTabbarControllerExample。我们需要使用一些类字母。让我逐步解释如何使用:

  • 首先安装 CocoaPods

    1 打开终端并cd ~ 到你的项目目录

    2 运行命令 - pod init

    3 您的 podfile 应该与 - pod 一起使用
    “ESTabBarController-swift”
    并保存

    4 并使用命令 pod install

  • 安装它
  • 打开.xcworkspace 扩展名的工程文件

    1 在项目中我们需要添加Content所有 swift 类和 pop.framework

    2 不要使用 add File to 添加 pop.framework。您必须从框架添加并添加其他。

    3 在Content文件夹的所有文件import ESTabBarController_swift

  • StoryBord 资料

    1 添加导航 Controller 并从 EST 演示的示例代码中添加 ExampleNavigationController。 (您也可以添加自己的)但请确保您设置了它的导航类自定义 swift 类。

  • AppDelegate.swift 中的代码资料

您需要在 didFinishLaunchingWithOptions 中执行以下代码

            let tabBarController = ESTabBarController()
tabBarController.delegate = self
tabBarController.title = "Irregularity"
tabBarController.tabBar.shadowImage = UIImage(named: "transparent")
tabBarController.tabBar.backgroundImage = UIImage(named: "background_dark")
tabBarController.shouldHijackHandler = {
tabbarController, viewController, index in
if index == 2 {
return true
}
return false
}
tabBarController.didHijackHandler = {
[weak tabBarController] tabbarController, viewController, index in

DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
let alertController = UIAlertController.init(title: nil, message: nil, preferredStyle: .actionSheet)
let takePhotoAction = UIAlertAction(title: "Take a photo", style: .default, handler: nil)
alertController.addAction(takePhotoAction)
let selectFromAlbumAction = UIAlertAction(title: "Select from album", style: .default, handler: nil)
alertController.addAction(selectFromAlbumAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
alertController.addAction(cancelAction)
tabBarController?.present(alertController, animated: true, completion: nil)
}
}

let v1 = ExampleViewController()
let v2 = ExampleViewController()
let v3 = ExampleViewController()
let v4 = ExampleViewController()
let v5 = ExampleViewController()

v1.tabBarItem = ESTabBarItem.init(ExampleIrregularityBasicContentView(), title: "Home", image: UIImage(named: "home"), selectedImage: UIImage(named: "home_1"))
v2.tabBarItem = ESTabBarItem.init(ExampleIrregularityBasicContentView(), title: "Find", image: UIImage(named: "find"), selectedImage: UIImage(named: "find_1"))
v3.tabBarItem = ESTabBarItem.init(ExampleIrregularityContentView(), title: nil, image: UIImage(named: "photo_verybig"), selectedImage: UIImage(named: "photo_verybig"))
v4.tabBarItem = ESTabBarItem.init(ExampleIrregularityBasicContentView(), title: "Favor", image: UIImage(named: "favor"), selectedImage: UIImage(named: "favor_1"))
v5.tabBarItem = ESTabBarItem.init(ExampleIrregularityBasicContentView(), title: "Me", image: UIImage(named: "me"), selectedImage: UIImage(named: "me_1"))

tabBarController.viewControllers = [v1, v2, v3, v4, v5]

let navigationController = ExampleNavigationController.init(rootViewController: tabBarController)
tabBarController.title = "Example"


self.window?.rootViewController = navigationController

return true

为 Tabbar 项目和您想要在 Assets 中使用的其他项目添加图像。希望对您有所帮助。

示例项目:https://github.com/nitingohel/CustomTabCenterBig

关于ios - 如何在 swift 3.0 中使用自定义 UI 创建标签栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42367219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com