2013-05-22 5 views
0

Im в настоящее время работает с UITableView и I'm уменьшив его с помощью следующих строк кода:UITableView изменения размера при добавлении элемента

[UIView animateWithDuration:0.25 animations:^{ 
    [self.tableView setFrame:CGRectMake(0, 0, 320, 177)]; 
}]; 

Когда он был изменен это выглядит следующим образом:

enter image description here

Но когда я добавляю элемент в таблицу, он возвращается в исходное положение. Нет никаких методов/функций, чтобы переместить его обратно в эту позицию, что делает это очень запутанным.

Я понял, что это происходит только тогда, когда я использую пользовательскую ячейку, более конкретную при добавлении элементов (UILabel, кнопок и т. Д.) К ней.

Любые предложения, что может быть неправильным?

ответ

2

Проверьте UITableView внутри вашего NIB (или раскадровки). Перейдите к инспектору размера и нажмите красную стрелку автосохранения, чтобы отключить автоутилизацию UITableView. Обычно UITableViews автоматически настраиваются по умолчанию в nib.

ИЛИ

Проверьте, чтобы увидеть, если Autolayout включен на ViewController. Возможно, вам придется отключить его, чтобы изменить размер UITableView.

  1. Выберите ViewController в раскадровке или NIB
  2. Нажмите «File Inspector» вкладку на правой стороне окна Xcode
  3. В разделе «Interface Builder документ», снимите флажок «Использовать Autolayout»

Надеюсь, это поможет кому-то. Autolayout иногда вызывает разочарование, как это для меня.

ИЛИ Если Autolayout необходимо для вашего проекта, анимации с помощью преобразования вместо рамы, как это:

[UIView animateWithDuration:0.25 animations:^{ 
    self.tableView.transform = CGAffineTransformMakeScale(2.0f, 2.0f); 
}]; 
+0

Просто пробовал, но в новой раскадровке я должен выбрать Resizer. Я также пытался сделать это с программным обеспечением setAutorezisingMask, и нет setAutorezisesSubviews для NO и ничего не работает. Любые другие предложения? Спасибо за помощь. – RobertH

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