이전 에는 자동 레이아웃 제약 조건으로 작업 한 적이 없습니다 . 작업중인 작은 새 앱이 있는데 NIB의보기가 기본적으로 자동 레이아웃으로 설정되어 있음을 알았습니다. 그래서 나는 그것을 함께 일할 기회를 잡고 애플이 이것으로 어디로 가고 있는지 알아 내려고 노력할 것이라고 생각했습니다.
첫 번째 도전 :
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]
).
그럼, 내가 생각 나는 그것이 그 UISegmentedControl의 상단에 상대가되기 위해서는 부모 뷰의 높이와 동일되는 것을 MKMapView의 제약을 변경되고 싶지 된 커버 :V:[MKMapView]-(16)-[UISegmentedControl]
내가 원하는 것은 맵 뷰 아래의 일부 컨트롤이 드러나도록 MKMapView 높이를 줄이는 것입니다. 이렇게하려면 제약 조건을 고정 전체 크기보기에서 하단이 UISegmentedControl의 상단으로 제한되는보기로 변경해야 한다고 생각 합니다. 그리고보기가 새로운 크기로 축소 될 때 애니메이션을 적용하고 싶습니다.
이것에 대해 어떻게 갑니까?
편집- 이 애니메이션은 보기 하단이 즉시 170 위로 이동하지만 애니메이션이 적용 되지 않습니다 .
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
그리고는 nibMapViewConstraint
바닥 수직 공간의 제약으로 IB에 연결되어 있습니다.