Я никогда раньше не работал с ограничениями автоматического размещения . У меня есть небольшое новое приложение, над которым я работаю, и я заметил, что представления NIB по умолчанию настроены на автоматическое размещение. Итак, я подумал, что воспользуюсь возможностью поработать с этим и попытаюсь выяснить, что Apple собирается с этим делать.
Первый вызов:
Мне нужно изменить размер MKMapView, и я хочу оживить его в новом положении. Если я сделаю это так, как привык:
[UIView animateWithDuration:1.2f
animations:^{
CGRect theFrame = worldView.frame;
CGRect newFrame = CGRectMake(theFrame.origin.x, theFrame.origin.y, theFrame.size.width, theFrame.size.height - 170);
worldView.frame = newFrame;
}];
... тогда MKMapView будет «привязан» к исходной высоте всякий раз, когда будет обновлено одноуровневое представление (в моем случае обновляется заголовок UISegmentedControl [myUISegmentedControl setTitle:newTitle forSegmentAtIndex:0]
).
Так, что я думаю , что я хочу сделать , это изменить ограничения на MKMapView от равен Hight родительского вида, чтобы быть по отношению к верхней части UISegmentedControl , что было покрывающим:V:[MKMapView]-(16)-[UISegmentedControl]
Я хочу, чтобы высота MKMapView уменьшилась, чтобы открывались некоторые элементы управления под видом карты. Для этого, я думаю, мне нужно изменить ограничение с фиксированного полноразмерного представления на такое, в котором нижняя часть ограничена верхом UISegmentedControl ... и я бы хотел, чтобы оно анимировалось по мере уменьшения представления до нового размера.
Как это сделать?
Редактировать - эта анимация не анимируется, хотя нижняя часть представления мгновенно перемещается на 170:
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
и nibMapViewConstraint
связан в IB с нижним ограничением вертикального пространства.