在代码中以编程方式更改TableView大小

时间:2015-12-30 18:40:55

标签: ios swift uitableview

我想在代码中更改整个表视图大小(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()
}

但它不起作用

2 个答案:

答案 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是一个更好的地方。