我正在尝试创建一个充满我的屏幕的tableView。并且在启动时,无论桌子是水平的还是垂直的,它总是看起来不错:
但是一旦旋转设备,tableView就会显示其背后的屏幕:
我首先尝试使用SO的以下代码段推荐:
tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight
但是我得到了错误: 使用未解决的标识符:UIViewAutoresizingFlexibleHeight 使用未解决的标识符:UIViewAutoresizingFlexibleHeight
所以我尝试用以下方法重新加载旋转的框架:
didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation)
但这似乎也不起作用。请注意,该视图无论横向还是纵向都可以很好地加载,但是一旦翻转视图,它就会变得很糟糕。
这是我当前正在viewDidLoad中滚动的代码:
super.viewDidLoad()
tableView = UITableView(frame: view.bounds, style: .plain)
tableView.backgroundColor = UIColor.blue
let cellNib = UINib(nibName: "PostTableViewCell", bundle: nil)
tableView.register(cellNib, forCellReuseIdentifier: "postCell")
view.addSubview(tableView)
tableView.register(LoadingCell.self, forCellReuseIdentifier: "loadingCell")
var layoutGuide:UILayoutGuide!
layoutGuide = view.safeAreaLayoutGuide
tableView.leadingAnchor.constraint(equalTo: layoutGuide.leadingAnchor).isActive = true
tableView.topAnchor.constraint(equalTo: layoutGuide.topAnchor).isActive = true
tableView.bottomAnchor.constraint(equalTo: layoutGuide.bottomAnchor).isActive = true
tableView.trailingAnchor.constraint(equalTo: layoutGuide.leadingAnchor).isActive = true
tableView.estimatedRowHeight = UITableViewAutomaticDimension
tableView.frame = self.view.bounds
tableView.delegate = self
tableView.dataSource = self
tableView.tableFooterView = UIView()
tableView.reloadData()
这是我的故事板的图片,仅供参考:
感谢您的帮助。
答案 0 :(得分:1)
您只需要
tableView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
tableView.leadingAnchor.constraint(equalTo: layoutGuide.leadingAnchor),
tableView.topAnchor.constraint(equalTo: layoutGuide.topAnchor),
tableView.bottomAnchor.constraint(equalTo: layoutGuide.bottomAnchor),
tableView.trailingAnchor.constraint(equalTo: layoutGuide.trailingAnchor)
])
然后评论
tableView.frame = self.view.bounds