gpt4 book ai didi

swift - TableView 布局未随设备方向变化而更新

转载 作者:行者123 更新时间:2023-11-30 10:42:24 25 4
gpt4 key购买 nike

所以我创建了一个 tableView 并使其框架与 View 的框架相同,因此它应该与手机屏幕的大小相同。但是,当我在模拟器中将设备方向更改为横向时,表格 View 与纵向模式保持相同的尺寸。

这是我的 tableView 代码:

        func setTableView() {
tableView.translatesAutoresizingMaskIntoConstraints = false
tableView.frame = view.frame
tableView.backgroundColor = UIColor.lightGray
tableView.delegate = self
tableView.dataSource = self
tableView.separatorColor = UIColor.lightGray

tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
}

这是 viewDidLoad 方法:

       override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(tableView)
setTableView()

}

这是我检测方向变化的方法:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)


if UIDevice.current.orientation.isLandscape {


print("Landscape")

} else {



print("Portrait")

}
}

这是我在模拟器中得到的结果。在横向模式下,表格 View 只有 View 宽度的一半,而它应该始终填充整个屏幕。

enter image description here

enter image description here

最佳答案

通常,如果您希望 View 的框架确定其 anchor ,则无需设置tableView.translatesAutoresizingMaskIntoConstraints = false。将该标志设置为 false 将强制它依赖 anchor 而不是其自己的 View 框架来设置其约束。

您可以尝试将其设置为true,或者您可以尝试将表格限制到 View ,如下所示:

self.view.addSubview(tableView)
tableView.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
tableView.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true
tableView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
tableView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true

这会将其限制在 View 框架内。如果您这样做,则无需担心设置tableView.frame = view.frame。就我个人而言,我更喜欢这种方法而不是依赖 View 的框架。

关于swift - TableView 布局未随设备方向变化而更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56498895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com