2013-05-13 1 views
10

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

Не хотите устанавливать размер рамки.

Будет ли отправлен код, если потребуется, но, возможно, мы сможем ответить с кодом на этом.

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

[Дополнение]

Также не работает без пользовательских ячеек.

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

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

+0

Некоторые снимки экрана были бы полезны. Трудно сказать, что на самом деле не изменилось. – matt

+0

Согласен, но этот вопрос уже не интересует меня прямо сейчас. Мы можем удалить его, если модератор захочет. – ort11

ответ

1

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

+0

Да, это должно было случиться. По какой-то причине в этом проекте это не так и пытается понять это. Пробовал над жестким кодом без везения. Я предполагаю, что правильный размер ячейки задается табличным представлением после (ячейка для индекса) и до (ячейка будет отображать). – ort11

+0

Реферирование немного и отлично работает. Не уверен, что это было. – ort11

1

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

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

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

То, что вы упомянули, является правильным, но авторезистирующие маски должны быть установлены следующим образом: (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight). У меня тоже были такие же сомнения, как вы упомянули в своем коде, поэтому я разместил вопрос в SO, и вы можете просмотреть его для справки: http://stackoverflow.com/questions/7754851/autoresizing-masks-programmatically-vs-interfact -builder-xib-nib –

+0

Этот код не работает с Swift2. Все эти константы заканчиваются неразрешенными идентификаторами. – zeeple

7

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

override func layoutSubviews() { 
    //... 

    super.layoutSubviews() 
} 

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

1

Для стрижа 2, это будет:

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

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

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

Примечание:cellUIView является UIView я добавил к contentView прототипа клеток.