通过设备旋转调整tableView的大小

时间:2019-07-19 15:21:18

标签: ios swift xcode

我正在尝试创建一个充满我的屏幕的tableView。并且在启动时,无论桌子是水平的还是垂直的,它总是看起来不错:

Normal table View

但是一旦旋转设备,tableView就会显示其背后的屏幕:

Abnormal Table View with Rotation

我首先尝试使用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()

这是我的故事板的图片,仅供参考:

enter image description here

感谢您的帮助。

1 个答案:

答案 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