Ячейка пользовательской таблицы IOS не меняет размер ширины для изменения ориентации

Имейте пользовательскую ячейку таблицы с ее собственными .XIB и .h и .m. Ничего особенного. Когда устройство вращается, ширина ячейки не изменяется. Вызывается ячейка таблиц для указательного пути, но ширина не изменяется (скажем, от портрета к пейзажу). Что мешает этому?

Не нужно указывать размер кадра.

При необходимости отправьте код, но, возможно, мы сможем ответить с кодом на этом.

Даже если запуск приложения в ландшафте также не устанавливает большую ширину ячейки.

[Добавление]

Также не работает с нестандартными ячейками.

self.tableViewSelection.autoresizesSubviews = true;
self.tableViewSelection.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.view.autoresizesSubviews = true;

XIB для таблицы имеет правильную настройку размера (поддержка не-IOS6).

Ответ 1

Если вы переопределяете layoutSubviews или другой метод, не забудьте назвать его супер:

override func layoutSubviews() {
    //...

    super.layoutSubviews()
}

Не выполнение этого приведет к проблеме, с которой вы сталкиваетесь.

Ответ 2

Ячейка будет автоматически иметь ту же ширину, что и представление таблицы. Таким образом, изменение размера может быть табличным представлением. Вы должны дать ему соответствующие ограничения (если использовать Autolayout, значение по умолчанию в iOS 6) или маску авторезистирования (в противном случае), чтобы она изменялась в зависимости от изменения размера верхнего уровня, чтобы компенсировать вращение устройства.

Ответ 3

Я также столкнулся с этой же проблемой при автореализации пользовательских ячеек при вращении. После битвы я получил решение как authorize cell.contentView, потому что добавляю свои представления как subview в cell.contentview.

Я использовал следующий код, и мой код отлично работает:)

cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;

Ответ 4

Для быстрого 2 это будет:

cell.contentView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]

Ответ 5

В Swift 4 работает ниже.

cell.cellUIView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

Примечание. cellUIView - это UIView, который я добавил в contentView прототипных ячеек.