2015-12-30 2 views
1

Я хочу изменить весь размер представления таблицы (x, y, width, height) в коде, а не в Main StoryBoard. Я сделал табличный вид в доске объявлений без макетов. Я попытался это:Измените TableView Size программно в коде

@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 

Предполагая, что нет никаких других вещей, которые влияют на рамки ваших взглядов (autolayout ограничение, автоматическое изменение маски), это обновит кадр до нового значения.

Также обратите внимание, что 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

Смежные вопросы