2015-02-26 1 views
0

У меня есть супервизор, который является только подклассом UIView, и у меня есть подкласс, который является подклассом UIImageView, который я хочу прикрепить к нижней части надзора.[Авто макет] Прикрепление UIView к нижней части своего супервизора при изменении высоты супервизора

Высота подвидности фиксированная, но высота надзора может быть изменена. Поэтому в основном, я хочу, чтобы subview всегда прикреплялся к нижней части супервизора, когда я изменяю высоту надстройки программно.

Я делаю это с помощью автоматической компоновки,

enter image description here

Так SuperView ушел, сверху, справа придают его надтаблице и высота (я собираюсь изменить его программно), вот ее ограничение ,

enter image description here

и подтаблица ушла, снизу, справа крепится к надтаблицам, и его фиксированная высоту, а другое ограничение, высота SuperView должна равняться или Greate r, чем высота подвид.

enter image description here

Наконец, когда я нажимаю кнопку в самом низу, изменить высоту надтаблицы. Вот код,

- (IBAction)testButtonPressed:(id)sender { 
    [self.dragDownView setFrame:CGRectMake(CGRectGetMinX(self.dragDownView.frame), CGRectGetMinY(self.dragDownView.frame), CGRectGetWidth(self.dragDownView.frame), 100)]; 
} 

Однако это не делает то, что я хотел, что держать подвид, прикрепленный к нижней части надтаблицы.

Перед тем, как изменить высоту:

enter image description here

После того как я изменить высоту:

enter image description here

Как вы можете видеть, что высота надтаблицы изменяется, однако subview все еще сохраняет то, что было раньше.

Кто может мне помочь?

+0

вы используете AutoLayout, не напрямую изменять кадров – Mornirch

+0

@mistyhua, что собирается помочь? –

+0

Подключите Constraint к контроллеру и обновите его, как я уже сказал. – Mornirch

ответ

1

ссылка ограничение: рама enter image description here

View Обновить как это:

self.heightConstraint.constant = 320; 
[self.view layoutIfNeeded]; 
0

Как вы используете Autolayout Constraint вы должны обновить Constraint вместо Frame.

Ссылка Height constraint вашего Superview на IBOutlet как предложено @mistyhua.

Теперь, когда вам нужно изменить Height вашего Superview, то вместо изменения рамки изменения Superview Height Constraint value.

self.heightConstraint.constant = 320; 
[self.view layoutIfNeeded];