不能只用 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 会导致调整弹出框的大小

为啥我不能只用前向声明 C++ 声明一个类的静态成员?

醒醒吧少年,只用Cucumber不能帮助你BDD

只用@property定义一个属性speed,子类不能直接用_speed,需要在interface的成员变量列表里写上_speed

从 tableviewcontroller 加载 tableviewcontroller 不起作用