所以我有这个屏幕:
此图像是 UIView 的 subview ,我将其用作表格的标题:
class CoursesDetailPageHeader: UITableViewHeaderFooterView {
@IBOutlet weak var imageView: UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
}
func setDefaultImage() {
imageView.image = UIImage(named: "header")
}
}
还有我的 tableView:
override func viewDidLoad() {
super.viewDidLoad()
let headerNib = UINib(nibName: "CoursesDetailPageHeader", bundle: nil)
tableView.register(headerNib, forHeaderFooterViewReuseIdentifier: "pageHeader")
}
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 220
}
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let pageHeader = tableView.dequeueReusableHeaderFooterView(withIdentifier: "pageHeader") as! CoursesDetailPageHeader
pageHeader.setDefaultImage()
return pageHeader
}
我应该怎么做,才能将 tableView 置于顶部,这样就没有空白空间(透明的 navController 所在的位置)?
更新: 展示我想要的东西: Desired TableViewController
已解决: 感谢@kathayatnk 问题已通过以下代码解决:
let statusBarHeight = UIApplication.shared.statusBarFrame.height
let navigationBarHeight = navigationController!.navigationBar.frame.size.height
let insets = UIEdgeInsets(top: -(statusBarHeight + navigationBarHeight), left: 0, bottom: 0, right: 0)
self.tableView.contentInset = insets
最佳答案
你或许可以设置嵌入式 tableView 的 insets
let insets = UIEdgeInsets(top: -64.0, left: 0, bottom: 0, right: 0)
self.tableView.contentInset = insets;
关于ios - 如何让 UITableView 忽略 UINavigationController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44923374/