Я никогда не работал с ограничениями autolayout. У меня есть небольшое новое приложение, над которым я работаю, и заметил, что просмотры 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 на то, что они равны высоте представления родителя, относительно того, что он охватывает верхнюю часть UISegmentedControl: V:[MKMapView]-(16)-[UISegmentedControl]
Я хочу, чтобы высота MKMapView сокращалась, чтобы выявить некоторые элементы управления под видом карты. Для этого я думаю, что мне нужно изменить ограничение с фиксированного полноразмерного вида на тот, где нижняя часть ограничена вершиной UISegmentedControl... и мне бы хотелось, чтобы она была анимацией, поскольку просмотр сжимается до нового размера.
Как это можно сделать?
Изменить - Эта анимация не анимируется, хотя нижняя часть представления мгновенно перемещается вверх 170:
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
и nibMapViewConstraint
подключается в IB до нижнего ограничения по вертикали.