Хотите только изменить размер среднего вида, используя автоматическую компоновку

Я использую autolayout в Xcode 6 для настройки этого пера. Единственный размер экрана, который не работает, это 3,5 дюйма.

Это представление добавляется в качестве подпредставления к моему основному представлению контроллера представления. Контроллер основного представления перед добавлением подпредставления изменит высоту кадра своего представления, чтобы оно соответствовало 3,5-дюймовому экрану, если он обнаружит 3,5-дюймовое устройство.

Мне нравится средняя часть — «Просмотр коллекции» «Просмотр фонового изображения» и «Просмотр коллекции», чтобы регулировать их высоту, чтобы верхняя панель инструментов и нижние баннеры и кнопки всегда были видны на экране при отображении на экране 3,5 дюйма. Большой белый индикатор активности всегда будет располагаться по центру в представлении «Коллекция».

Но когда это представление отображается на 3,5-дюймовом экране, нижние виды баннеров и кнопка вообще не отображаются. Нижняя часть экрана заканчивается где-то над видами баннеров.

Я много раз пытался играть с ограничениями и приоритетами сопротивления, но ничего не получалось.

Что мне делать, чтобы исправить это?

Заранее спасибо!

просмотреть макет


person aobs    schedule 29.09.2014    source источник


Ответы (1)


Я изменил способ реализации. Я использую autolayout для настройки верхней панели инструментов и нижних представлений.

Я создаю фоновое изображение среднего представления коллекции и представление коллекции программно. Высота фонового изображения и представления коллекции вычисляются по формуле

CGFloat collectionViewBackgroundImageHeight = [UIScreen mainScreen].bounds.size.height - _toolbarBackgroundImage.bounds.size.height - _aimBannerImageView.bounds.size.height;

CGFloat collectionViewHeight = collectionViewBackgroundImageHeight - 4;

Кроме того, я добавляю следующее, чтобы xib соответствовал фрейму своего родителя.

-(void)viewWillAppear:(BOOL)animated
{
     if (is3Point5InchScreen) {
          self.view.frame = CGRectMake(0, 0, 320, 480);
     }
     [super viewWillAppear:animated];
}
person aobs    schedule 30.09.2014