Ответ 1
Если вы переопределяете layoutSubviews
или другой метод, не забудьте назвать его супер:
override func layoutSubviews() {
//...
super.layoutSubviews()
}
Не выполнение этого приведет к проблеме, с которой вы сталкиваетесь.
Имейте пользовательскую ячейку таблицы с ее собственными .XIB и .h и .m. Ничего особенного. Когда устройство вращается, ширина ячейки не изменяется. Вызывается ячейка таблиц для указательного пути, но ширина не изменяется (скажем, от портрета к пейзажу). Что мешает этому?
Не нужно указывать размер кадра.
При необходимости отправьте код, но, возможно, мы сможем ответить с кодом на этом.
Даже если запуск приложения в ландшафте также не устанавливает большую ширину ячейки.
[Добавление]
Также не работает с нестандартными ячейками.
self.tableViewSelection.autoresizesSubviews = true;
self.tableViewSelection.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.view.autoresizesSubviews = true;
XIB для таблицы имеет правильную настройку размера (поддержка не-IOS6).
Если вы переопределяете layoutSubviews
или другой метод, не забудьте назвать его супер:
override func layoutSubviews() {
//...
super.layoutSubviews()
}
Не выполнение этого приведет к проблеме, с которой вы сталкиваетесь.
Ячейка будет автоматически иметь ту же ширину, что и представление таблицы. Таким образом, изменение размера может быть табличным представлением. Вы должны дать ему соответствующие ограничения (если использовать Autolayout, значение по умолчанию в iOS 6) или маску авторезистирования (в противном случае), чтобы она изменялась в зависимости от изменения размера верхнего уровня, чтобы компенсировать вращение устройства.
Я также столкнулся с этой же проблемой при автореализации пользовательских ячеек при вращении. После битвы я получил решение как authorize cell.contentView, потому что добавляю свои представления как subview в cell.contentview.
Я использовал следующий код, и мой код отлично работает:)
cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
Для быстрого 2 это будет:
cell.contentView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
В Swift 4 работает ниже.
cell.cellUIView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
Примечание.
cellUIView
- этоUIView
, который я добавил вcontentView
прототипных ячеек.