用约束animationUIView框架

我有一个UIView中的一个元素的约束,说它应该总是从视图的底部10像素。 然后,我试图为这个视图的高度设置animation,这样看起来就像在屏幕上滑动一样。 根据约束条件,元素始终应该距离视图底部10个像素。 当我像这样添加视图时,这是真实的…

printView *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"printView"]; [self addChildViewController:vc]; vc.view.frame = CGRectMake(0, 60, vc.view.frame.size.width, HEIGHT); vc.view.layer.masksToBounds = FALSE; [vc.view.layer setShadowOffset:CGSizeMake(0.0, 5.0)]; [vc.view.layer setShadowOpacity:0.8]; vc.view.layer.shadowColor = [[UIColor blackColor] CGColor]; vc.view.layer.shadowRadius = 8; vc.view.clipsToBounds = TRUE; [self.view insertSubview:vc.view aboveSubview:docWebView]; 

我可以将HEIGHT更改为任何我想要的元素总是从视图底部10个像素。 当我尝试对高度进行animation处理时,问题就出现了

 printView *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"printView"]; [self addChildViewController:vc]; vc.view.frame = CGRectMake(0, 60, vc.view.frame.size.width, 0); vc.view.layer.masksToBounds = FALSE; [vc.view.layer setShadowOffset:CGSizeMake(0.0, 5.0)]; [vc.view.layer setShadowOpacity:0.8]; vc.view.layer.shadowColor = [[UIColor blackColor] CGColor]; vc.view.layer.shadowRadius = 8; vc.view.clipsToBounds = TRUE; [self.view insertSubview:vc.view aboveSubview:docWebView]; [UIView animateWithDuration:5.0 animations:^{ vc.view.frame = CGRectMake(0, 60, vc.view.frame.size.width, 200); [self.view setNeedsDisplay]; }]; 

这个约束不再被认可,代替视图总是从底部向下滑动10个像素,它看起来像元素被揭示,因为元素不随视图移动。 我希望我解释得很好。 换句话说,我要去拉下一张地图的效果,但是看起来地图已经在那里了,覆盖它的一张纸正在被拉开。 谢谢你的帮助。

使用约束时,不应该设置框架,您应该调整约束。 当您最初设置您的约束时,您应该创build一个IBOutlet到高度约束,然后在animation块中为其常量参数设置animation。 如果你有一个叫做heightCon的高度约束,你可以这样做:

 [UIView animateWithDuration:5.0 animations:^{ self.heightCon.constant = 200 [self.view layoutIfNeeded]; }]; 

我不确定你的结构,self.view可能不得不是vc.view。

编辑后:

这是animation高度约束的方式,但我不确定这是你想要做什么来完成你的样子。 我不太清楚你最后一段的内容。 如果你想要拉下一个地图的效果,底部约束似乎需要animation或消除。