2017-02-13 14 views
0

У меня есть представление, что я скрываю его в нижней части экрана и хочу, чтобы scrollView над ним настраивал и заполнял пустое пространство.Swift: Просмотры, не относящихся к программным ограничениям

Вид в нижней части экрана - GADBannerView и имеет фиксированную высоту 50 (bannerHeight). Вид прокрутки над ним имеет ограничение на нижнюю часть контейнера, равную 50 (scrollConstraint). См фото.

enter image description here

В viewDidLoad это я установка этих ограничений на следующее:

bannerHeight.constant = 0 
scrollConstraint.constant = 0 

Это является причиной bannerView действительно исчез, но вид прокрутки остается в его исходное положение и не заполняя пустое пространство ,

+0

у меня есть 2 предложения: попытайтесь поместить свой код в viewWillAppear и убедитесь, что translatesAutoresizingMaskIntoConstraints = False для обоих баннера и прокручивать виды. Иногда ограничения не полностью вычисляются в viewDidLoad. – Ocunidee

+0

Вам нужно использовать 'bannerHeight.constant' как значение для' scrollConstraint.constant'. –

ответ

1

Вы можете заставить супервизор принять во внимание изменение ограничения, поскольку это не происходит автоматически. Добавьте вместо этого код для просмотраDidLayoutSubviews() или просто вызовите view.layoutIfNeeded() после того, как вы установите константы в 0 в viewDidLoad().

Если это не работает, вы можете попробовать этот альтернативный подход:

Перейдите к раскадровке и нажмите на нижнем ограничении отображения вида скроллинга (синюю линия, которая дает прокрутку просмотреть его нижнее ограничение 50). В инспекторе Атрибуты вы должны быть в состоянии видеть детали вашего ограничения, он должен выглядеть как этот

Attributes Inspector

В поле, которое запрашивает идентификатор, дать ему название «ScrollViewBottom» или любое другое имя как.

петли Теперь над всеми ограничениями, которые составляют вид прокрутки и использовать имя идентификатора, чтобы найти правильную и изменить его постоянная следующий

for constraint in yourScrollView.superview!.constraints { 

if constraint.identifier == "ScrollViewBottom" { 
    constraint.constant = 0 
} 
} 

Наконец, заставить мнение учитывать этого изменение путем вызова следующей сразу после

view.layoutIfNeeded()