我想在代码中更改整个表视图大小(x,y,宽度,高度),而不是在主StoryBoard中。 我在故事板上制作了没有布局的桌面视图。 我试过这个:
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.frame.size.width = self.view.frame.size.width
tableView.frame.size.height = self.view.frame.size.height
tableView.reloadData()
}
但它不起作用
答案 0 :(得分:4)
在viewDidAppear
:
tableView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)
答案 1 :(得分:2)
CGRect
是一个结构,这意味着每次访问frame
属性时,都会获得该矩形的副本。更改矩形中的字段仅影响本地副本,而不影响视图使用的值。
因此,为了更新frame
属性的任何字段,您需要立即设置它:
var frame = tableView.frame
frame.size.width = ...
frame.size.height = ...
tableView.frame = frame
假设没有其他因素影响视图的帧(自动布局约束,自动调整遮罩),这会将帧更新为新值。
另请注意,viewDidLoad
可能不是设置框架的最佳位置,因为这些属性可能尚未初始化。例如,viewWillAppear
是一个更好的地方。