繁体   English   中英

自定义标签栏 iOS

[英]Custom Tab Bar iOS

在此处输入图片说明

我想创建一个如图所示的自定义标签栏。 我不知道如何开始UITabBar以获得这个结果。 如果我只有一个 Root UIViewController ,并通过interface builder (UIView、图像、圆形按钮等)创建标签栏的感知并为地图添加ContainerView并列出UIViewController会怎样? 这种方法的缺点是什么(如果有的话)? 调整大小问题(在 iPhone 6 上看起来不错,但在 iPhone X 上看起来不错),因为没有标签栏可以动态调整大小?

当您分解任何UIKit组件时,例如UITabBar ,您将发现的只是其他UIKit组件,它们都可供我们使用。 虽然有时使用 Apple 的预构建东西很好,但他们并不总是喜欢我们干涉他们,他们经常隐藏我们想要修改的行为。

您应该完全零担心创建自己的 UI 组件,例如自定义标签栏,就我们而言,它只不过是带有UIButtonUIImageView子视图的UIView容器。 如果你有一个容器视图控制器(包含子视图控制器),把标签栏放在那里,你将有一个合法的标签栏,它总是叠加在内容视图控制器上,除了呈现的视图控制器(这正是我们想要的行为)。

就 iPhone X 和安全区域而言,只需按照您通常的任何视图应用它们,因为这就是您的所有自定义标签栏:

if #available(iOS 11.0, *) {

    tabBar.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
    tabBar.widthAnchor.constraint(equalTo: view.safeAreaLayoutGuide.widthAnchor).isActive = true
    tabBar.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true

} else {

    tabBar.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    tabBar.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
    tabBar.bottomAnchor.constraint(equalTo: bottomLayoutGuide.topAnchor).isActive = true

}

tabBar.heightAnchor.constraint(equalToConstant: 44).isActive = true

对于您对调整大小的担忧,如果您在容器视图控制器中设置标签栏约束(就像您无论如何都应该做的那样),它将以各种可能的方式拉伸和旋转,而不会失败。

您可以使用ESTabBarController它易于使用并且可以解决您的问题..:)

https://github.com/eggswift/ESTabBarController

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM