Я не знаю, почему поведение изменилось в iOS 8, но я нашел обходное решение.
В моем случае я изменил сообщение setFrame на следующее:
-(void) setFrame:(CGRect) frame {
frame.origin.x += TABLE_PADDING;
frame.size.width = self.superview.frame.size.width - (2.0f * TABLE_PADDING);
[super setFrame: frame];
}
Так я использую SuperView boundings для расчета. Однако это может не работать в любом случае ...
Я столкнулся с другой проблемой при переупорядочивании ячейки.
В случае, если вы переназначения попробовать это:
-(void) setFrame:(CGRect) frame {
if(isDragging)
frame.origin.x = self.supervire.frame.origin.x + TABLE_PADDING;
else
frame.origin.x += TABLE_PADDING;
frame.size.width = self.superview.frame.size.width - (2.0f * TABLE_PADDING);
[super setFrame: frame];
}
Чтобы получить информацию, если TableCell тащит я использовал решение, предложенное в этом вопросе: How to get notified of UITableViewCell move start and end
Edit я столкнулся с более и больше проблем с сообщением setFrame, поэтому я решил НЕ использовать стандартный TableViewController. Теперь я использую стандартный ViewController с панелью поиска и контроллером отображения поиска. И таблица View внутри контроллера View. Таким образом, я могу использовать ограничения автоопределения для настройки ширины таблицы. Это кажется лучшим решением для моего случая, так как я не мог найти способ заставить его работать (в любом случае) с помощью сообщения setFrame.
Я не испытал этого, но есть очень хорошая статья о изменении размеров ячеек, надеюсь, это поможет http://www.appcoda.com/self-sizing-cells/ – DevC
Я испытываю такое же поведение. Когда я переключаю свой рабочий стол между редактированием и нормальным режимом, вставки будут добавлены на frame.size.width, поэтому при каждом переключении в режим редактирования табличная ячейка становится все меньше. – HashtagMarkus