【发布时间】:2020-06-17 01:10:07
【问题描述】:
我有一个UITabBarController,里面有四个屏幕,类型为“BaseViewController”,它是UIViewController 的一个非常简单的子类,它将包含一个标题,显示一个UILabel,表示用户在哪个屏幕上。例如,当用户单击tabBar 上的主页选项卡时,标签将显示为“HOME”
BaseViewController 的代码:
class BaseViewController: UIViewController {
let screenIndicationLabel: UILabel = {
let label = UILabel()
label.setAttrs(font: "bold", size: 25.0, color: .black)
label.textAlignment = .center
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(screenIndicationLabel)
screenIndicationLabel.translatesAutoresizingMaskIntoConstraints = false
screenIndicationLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
screenIndicationLabel.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
screenIndicationLabel.heightAnchor.constraint(equalToConstant: 50.0).isActive = true
}
}
UITabBarController 的代码:
class MainTabController: UITabBarController {
let home = HomeController()
let browse = BrowseController()
let bag = BagController()
let settings = SettingsController()
override func viewDidLoad() {
super.viewDidLoad()
self.viewControllers = [home, browse, bag, settings]
self.selectedIndex = 0
self.tabBar.barTintColor = Colors.pink
self.tabBar.unselectedItemTintColor = Colors.darkPink
self.tabBar.tintColor = Colors.darkGrey
home.tabBarItem = homeTab
browse.tabBarItem = browseTab
bag.tabBarItem = bagTab
settings.tabBarItem = settingsTab
}
标签工作正常,但我的问题是在启动应用程序时开始的。作为UITabBarController 的根控制器的主屏幕似乎忽略了UILabel 的这些自动布局约束。显然,在每个屏幕中,标签的文本都设置在viewDidLoad()中。
如果有人能帮我解决这个问题,我将不胜感激!
【问题讨论】:
-
你检查过标题是否被限制在安全区域吗?
标签: ios swift autolayout uitabbarcontroller