我以前从未使用过自动布局约束。我正在使用一个小型新应用程序,并且注意到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;
}];
...然后,无论何时更新同级视图(在我的情况下,UISegmentedControl的标题正在更新[myUISegmentedControl setTitle:newTitle forSegmentAtIndex:0]
),MKMapView都会“捕捉”回到其原始高度。
所以,我觉得我想要做的是从等于父视图的HIGHT到可相对于UISegmentedControl,它的顶部改变的MKMapView的限制被覆盖:V:[MKMapView]-(16)-[UISegmentedControl]
我想要的是缩短MKMapView的高度,以便显示地图视图下的某些控件。为此,我认为我需要将约束从固定的全尺寸视图更改为底部约束到UISegmentedControl顶部的约束...并且我希望它随着视图缩小到新大小而进行动画处理。
如何做到这一点?
编辑- 尽管视图的底部确实会立即向上移动170,但该动画没有设置动画:
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
并将其nibMapViewConstraint
在IB中连接到底部的垂直空间约束。