Я использую подкласс UIView, чтобы (программно) содержать и управлять многочисленными подпредставлениями (в основном, UIImageViews), которые должны быть расположены рядом друг с другом так, чтобы ни одно из них не перекрывалось. Можно с уверенностью предположить, что подпредставления имеют одинаковую высоту (при первоначальной прорисовке), но имеют различную ширину. Размер контейнера может быть изменен, и в этом случае я хочу, чтобы подпредставления масштабировались пропорционально. Более того, бывают случаи, когда мне нужно добавить / удалить / отредактировать любое данное подпредставление (которое может изменить его ширину).
У меня был некоторый успех в использовании:
[self setAutoresizesSubviews:YES];
[self setAutoresizingMask:(UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleHeight |
UIViewAutoresizingFlexibleBottomMargin)];
чтобы контейнер автоматически изменял размеры своих подпредставлений при смене фрейма.
К сожалению, у меня много проблем, связанных со случаем, когда содержимое подпредставления изменяется, в результате чего оно расширяется или сжимается. Простая установка 'setNeedsLayout' и определение 'layoutSubviews' для подпредставления, похоже, не помогает, потому что в начале layoutSubviews кадр подпредставления не был отрегулирован. Если я заставлю его, то текущее содержимое будет растянуто или сжато, что выглядит ужасно.
Я бы, конечно, был бы признателен, если бы кто-то мог объяснить, как sizeToFit, layoutSubviews, sizeThatFits :, setAutoresizesSubviews :, setAutoresizingMask: и setContentMode: должны использоваться в подобном случае. Я имею в виду, если я хочу настроить содержимое подпредставления (и расширить его), то как мне сделать это так:
- расширение подпредставления (без растягивания или авторазмера чего-либо еще в нем)
- контейнер расширен пропорционально количеству
- Ни одно из других подпредставлений не затронуто
Заранее спасибо!