Swift:更改 UINavigationController 视图的高度
Posted
技术标签:
【中文标题】Swift:更改 UINavigationController 视图的高度【英文标题】:Swift: Change height of UINavigationController view 【发布时间】:2020-06-22 14:42:15 【问题描述】:我在 UINavigationController 中嵌入了一个 UITableView。 UITableView 设置如下:
import UIKit
class HistoryTableViewController: UITableViewController
let cellID = "HistoryColumns"
struct CellData
let date: String?
let number: String?
let before: String?
let after: String?
let diff: String?
let strength: String?
let location: String?
var data = [CellData]()
override func viewDidLoad()
super.viewDidLoad()
data = [
// data goes here
]
tableView.register(HistoryTableViewCell.self, forCellReuseIdentifier: cellID)
self.navigationController?.navigationBar.topItem?.title = "Recent Activity"
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int
return 1
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return data.count
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: cellID) as! HistoryTableViewCell
if indexPath.row % 2 == 0
cell.backgroundColor = UIColor.orange.withAlphaComponent(0.3)
cell.date.valueLabel.text = data[indexPath.row].date
cell.number.valueLabel.text = data[indexPath.row].flightNumber
cell.before.valueLabel.text = data[indexPath.row].preFuel
cell.after.valueLabel.text = data[indexPath.row].postFuel
cell.diff.valueLabel.text = data[indexPath.row].uplift
cell.strength.valueLabel.text = data[indexPath.row].density
cell.location.valueLabel.text = data[indexPath.row].location
return cell
我在 UINavigationController 中调用控制器如下:
@objc func handleTap(_ sender: UITapGestureRecognizer? = nil)
DispatchQueue.asyncMain
let history = HistoryTableViewController()
let navigationController = UINavigationController(rootViewController: history)
self.present(navigationController, animated: true, completion: nil)
我要做的是在这里定义navigationController的视图高度(大约500)。我试过使用 navigationController.view.heightAnchor.constraint 但没有效果(显然我先将 translatesAutoresizingMaskIntoConstraints 设置为 false)...
我确实想在这里使用 UINavigationController,因为我需要它附带的导航栏。任何建议都非常感谢...
【问题讨论】:
这能回答你的问题吗? How to increase the height of navigation bar in Xcode? 抱歉,这是实际视图本身。我不希望它占据整个屏幕 - 更像是一个弹出窗口 【参考方案1】:当你说.present
时,呈现的视图控制器占据屏幕的方式取决于你。进行自定义转换并为您自己的 UIPresentationController 子类提供frameOfPresentedViewInContainerView
的实现,以说明呈现的视图控制器的视图应该去哪里。
这也是一个带有自定义动画的愚蠢示例,但如果您不想自定义动画,则不必自定义。重要的是,我已经使呈现的视图控制器比正常情况下要小。
【讨论】:
以上是关于Swift:更改 UINavigationController 视图的高度的主要内容,如果未能解决你的问题,请参考以下文章
Swift:动态更改 TableViewCell 高度和动态更改 WebView 高度