不能只用 tableViewController 获得大标题
Posted
技术标签:
【中文标题】不能只用 tableViewController 获得大标题【英文标题】:Can't only get large title with tableViewController 【发布时间】:2020-11-16 13:16:54 【问题描述】:大家好,希望大家都平安无事
我实际上正在为一个新应用程序实现一个表格视图,我希望标题始终保持较大,我不希望它在用户向下滚动时崩溃,并且我从今天早上开始就在使用我的代码进行战斗,没有任何工作。我发现的关于它的最后一个 SO 解决方案就像 3 年前一样,并且不起作用。
所以我得到了一个导航控制器,然后是我的根视图控制器,然后是这个表视图控制器
这里是故事板中使用的不同预设
nav bar storyboard presets
root vc nav bar storyboard presets
还有表格视图控制器的代码
class PositionVC: UITableViewController
let positions = ["QB", "WR", "RB", "TE", "OL", "DT", "DE", "EDGE", "LB", "CB", "S"]
override func viewDidLoad()
super.viewDidLoad()
title = "Positions"
self.navigationController?.navigationBar.prefersLargeTitles = true
self.navigationItem.largeTitleDisplayMode = .always
self.tableView.backgroundColor = .primaryBlue
// MARK: - Table view data source
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return positions.count
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = positions[indexPath.row]
cell.textLabel?.textAlignment = .center
cell.textLabel?.font = UIFont(name: "AlfaSlabOne-Regular", size: 25)
return cell
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
cell.contentView.layer.masksToBounds = true
cell.backgroundColor = .primaryBlue
如果您还需要查看其他内容,请告诉我
谢谢大家
【问题讨论】:
【参考方案1】:我一直在做一个项目,该项目还需要大标题不要折叠成小标题,我花了很长时间才知道没有其他方法可以做到这一点,而不是隐藏 navigationController 并将 UILabel 设置为大字体你需要在 NavigationControllers 标题的地方。
这是我在该过程中使用的 UILabel 的设置:
navigationController?.navigationBar.tintColor = UIColor.clear
navigationController?.navigationBar.isHidden = true
让 lbl: UILabel =
let label = UILabel()
label.backgroundColor = UIColor.clear
label.textColor = UIColor.black
label.textAlignment = .left
label.text = "Running Map"
label.font = UIFont.boldSystemFont(ofSize: 35.0)
return label
()
为了正确放置,不要忘记使用约束
lbl.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: 100).isActive = true
lbl.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 20).isActive = true
lbl.heightAnchor.constraint(equalToConstant: 50).isActive = true
lbl.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 33).isActive = true
lbl.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -(view.frame.height * 0.844)).isActive = true
【讨论】:
以上是关于不能只用 tableViewController 获得大标题的主要内容,如果未能解决你的问题,请参考以下文章
Swift,URLSession,viewDidLoad,tableViewController
在 uipopovercontroller 中推送一个新的 tableViewController 会导致调整弹出框的大小
只用@property定义一个属性speed,子类不能直接用_speed,需要在interface的成员变量列表里写上_speed