我需要在我开发的其中一个应用程序中制作下面的表格结构。我正在使用UITableView&创建这个表。我需要根据屏幕方向更改表格列宽度。我已经设置了列宽和范围的约束。我将使用 viewDidLoad()中的屏幕宽度为这些值指定值。
但是,当屏幕方向发生变化时,我无法弄清楚如何重新对齐这些约束。我发现当方向改变时会调用 viewWillTransition()&我重新计算了那个&为表视图调用setNeedsLayout()。但是,当更改屏幕方向时,我无法使表格视图重置表格列宽。我是IOS平台的新手,非常感谢任何帮助。
HDR_parName / HDR_parValue / HDR_minValue / HDR_maxValue
PARA1 / VALUE1 / minvalue1 / maxvalue1
PARA2 / VALUE2 / minvalue2 / maxvalue2
答案 0 :(得分:3)
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
let animationHandler: ((UIViewControllerTransitionCoordinatorContext) -> Void) = { [weak self] (context) in
// This block will be called several times during rotation,
// so if you want your tableView change more smooth reload it here too.
self?.tableView.reloadData()
}
let completionHandler: ((UIViewControllerTransitionCoordinatorContext) -> Void) = { [weak self] (context) in
// This block will be called when rotation will be completed
self?.tableView.reloadData()
}
coordinator.animateAlongsideTransition(animationHandler, completion: completionHandler)
}
然后将调用tableView数据源和委托方法,您可以根据tableView框架大小设置元素大小。
答案 1 :(得分:1)
快捷键4
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
let animationHandler: ((UIViewControllerTransitionCoordinatorContext) -> Void) = { [weak self] (context) in
// This block will be called several times during rotation,
// so if you want your tableView change more smooth reload it here too.
self?.yourTable.reloadData()
}
let completionHandler: ((UIViewControllerTransitionCoordinatorContext) -> Void) = { [weak self] (context) in
// This block will be called when rotation will be completed
self?.yourTable.reloadData()
}
coordinator.animate(alongsideTransition: animationHandler, completion: completionHandler)
}
答案 2 :(得分:0)
这是一个非常简单的解决方案,你所做的是错误的。 考虑您希望全宽作为行宽。
您不必为单元格宽度设置任何约束,而是为您的tableview设置尾随约束。它将处理所有。
如果您仍然遇到类似问题,请尝试
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
self.view.layoutIfNeeded()
}
如果您仍然面临这个问题,请告诉我。