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