2014-10-16 2 views
2

Xcode Interface Builder меня раздражает, и я потратил большую часть своего времени на поиски решения.Ограничения интерфейса интерфейса Xcode6, не растягивающие подзадачи

У меня есть раскадровка с CollectionViewCell, которая содержит UIImageView. Размер CollectionViewCell составляет 125 x 125 и проверяется подпрограмма Autoresize.

UIImageView имеет 4 ограничения на его супервизор (ведущий, конечный, верхний, нижний), все равны 0. Это должно гарантировать, что UIImageView имеет размер, чтобы заполнить супервизор. UIImageView правильно настроен, когда CollectionViewCell сокращается до меньшего размера, но НЕ РАБОТАЕТ, когда CollectionViewCell растягивается до большего размера.

EDIT: Я пробовал то же самое с использованием подсмотра UILabel, и то же самое происходит.

Это известная проблема или есть способ отладки ограничений?

Thanks

+0

Попробуйте вызвать sizeToFit на изображении при изменении размера ячейки (I.e.In layoutSubviews) –

+0

Привет, Анна, я пробовал это (см. Фрагмент кода ниже), но, к сожалению, пока не работает. '@implementation DeckViewCell - (пустоты) layoutSubviews { \t [супер layoutSubviews]; \t [self.thumbnail размерToFit]; \t [self.title sizeToFit]; } ' – cridgit

ответ

1

Я наконец-то нашел полное решение проблемы с http://www.nomtek.com/adjusting-your-app-to-ios-8/

Во-первых, я должен был убедиться, мой CollectionViewCell был AUTORESIZE подвиды проверил в Interface Builder, то я должен был добавить следующий метод awakeFromNib на подкласса ConnectionViewCell ,

- (void)awakeFromNib { [super awakeFromNib]; self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; }

С этими двумя вещами, содержание моих клеток (UIImageView и UILabel) растянуты должным образом, даже с динамической ячейки проклейки с использованием sizeForItemAtIndexPath.

0

Я сделал частичный прогресс.

Я динамически настраивал размер ячейки, используя sizeForItemAtIndexPath.

Если я опустил этот метод и установил более крупный размер ячейки FlowLayout CollectionView в Interface Builder, он будет работать, как ожидалось. Это означает, что ограничения и размер subview обновляются во время компиляции.

Я все еще хотел бы знать, как динамически обновлять ограничения и размеры подвидных изображений при использовании sizeForItemAtIndexPath. Какие-либо предложения?

+0

Поскольку я изучал автозапуск, я нашел, что он работает лучше всего, если вы позволите ему сделать как можно больше. Каждый раз, когда вы устанавливаете что-то вручную, оно просто откладывается, и результаты становятся непредсказуемыми. Но, конечно, некоторые вещи должны выполняться программно. В этом случае попробуйте установить размеры, изменив ограничения: например, создайте ограничения по высоте и ширине для чего-то, что вам нужно изменить, и измените их во время updateConstraints в вашем контроллере представления или в пользовательском классе вида. (неопределенный ответ, но больше вещей, чтобы поэкспериментировать с!) –

+0

О, и убедитесь, что вы настроили translatesautoresizingmaskintosonstraints на false для всего. –

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