2013-07-13 72 views
2

我有一个UIView中的元素,约束条件是它应该总是从视图的底部起10个像素。然后,我试图为这个视图的高度设置动画,以便它看起来向下滑动屏幕。根据约束,该元素始终应该距视图底部10个像素。当我添加视图像这样这也是如此......动画UIView框架的约束

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]; 

我可以改变高度,以任何我想要和元素总是从视图的底部10个像素。问题是当我尝试动画的高度

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个像素,它看起来像元素的元素滑动在视图中被发现,因为元素不随视图移动。我希望我解释得很好。换句话说,我想要拉下一张地图的效果,但看起来地图已经在那里了,覆盖它的一张纸正在被拉开。谢谢你的帮助。

回答

13

使用约束条件时,您不应该设置框架,您应该调整约束条件。在最初设置约束时,应该将IBOutlet设置为高度约束,然后在动画块中为其常量参数设置动画。如果你有叫heightCon的高度限制,你可以这样做:

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

我不知道你的结构,即self.view可能要代替vc.view。

编辑后:

这是动画的高度约束的方式,但我不知道这是你想要做的做到你以后看什么。我不太确定你最后一段的内容。如果你想要拉下地图的效果,看起来底部约束需要动画或消除。

+1

哦,伙计。我不知道可以为约束创造出路。惊人! – fnc12

+0

说你有4个标签,从上到下,你将如何使用自动布局来定位这些标签。我的意思是你有三种约束:第一个标签和顶部视图,在两个标签之间,最后一个标签和底部视图。我将如何指定这些约束条件,以便它不会过多地拉伸空间,也不会拉伸标签本身的高度?我会给百分比空间/距离/高度还是只是固定的金额(iPhone5,6加上iPad mini,iPad Air,iPad Pro不同)。 **我只想要一个粗略的想法,不需要代码。** – Honey