2015-12-30 45 views
1

我想在代碼中而不是在主StoryBoard中更改整個表視圖大小(x,y,寬度,高度)。 我在沒有佈局的故事板中創建了表格視圖。 我嘗試這樣做:以編程方式在代碼中更改TableView大小

@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

做viewWillAppear中/ viewdidappear而不是觀點做負載 –

+0

還,什麼是表視圖的初始大小? –

回答

3

viewDidAppear試試這個:

tableView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) 
+0

不,不工作viewWillAppear和viewDidAppear .. – Eliko

+0

您是否添加約束到故事板中的tableView? – LoVo

+0

我的壞話!它在viewDidAppear中工作!謝謝! – Eliko

2

CGRect是一個結構,這意味着每次訪問frame財產時,你獲得的矩形的副本。更改矩形中的字段僅影響本地副本,而不影響視圖使用的值。

所以爲了更新frame財產的任何領域,你需要同時設置了一切:

var frame = tableView.frame 
frame.size.width = ... 
frame.size.height = ... 
tableView.frame = frame 

假設有沒有影響你的視圖幀(自動版式限制其他的事情,自動尺寸蒙版),這會將幀更新爲新值。

另請注意,viewDidLoad可能不是設置框架的最佳位置,因爲這些屬性可能尚未初始化。例如,viewWillAppear是一個更好的地方。

+0

我現在試過了: 'var frame = tableView.frame; frame.size.width = self.view.frame.size.width; frame.size.height = self.view.frame.size.height; tableView.frame = frame; ' 它沒有工作.. – Eliko

+0

也不能在viewWillAppear和viewDidAppear ... – Eliko

+0

'self.view.frame'是否具有預期值? – Cristik

相關問題