Ios 如何设置UIView容器的动画以降低其高度?

Ios 如何设置UIView容器的动画以降低其高度?,ios,objective-c,uiview,Ios,Objective C,Uiview,我正在寻找动画的大小,我的UIView容器的同时,我的广告出现在底部。我有广告幻灯片从屏幕底部时,它准备好了。我希望我的UIView容器在广告向上滑动时减小相同的大小 我在嵌入容器视图的顶级UIViewController中为容器视图创建了一个outlet属性 我的广告动画代码: - (void)adViewDidReceiveAd:(GADBannerView *)view { NSLog(@"Received Ad"); [UIView animateWithDuratio

我正在寻找动画的大小,我的UIView容器的同时,我的广告出现在底部。我有广告幻灯片从屏幕底部时,它准备好了。我希望我的UIView容器在广告向上滑动时减小相同的大小

我在嵌入容器视图的顶级UIViewController中为容器视图创建了一个outlet属性

我的广告动画代码:

- (void)adViewDidReceiveAd:(GADBannerView *)view
{
    NSLog(@"Received Ad");

    [UIView animateWithDuration:1.0 animations:^ {
        view.frame = CGRectMake(0.0,
                                self.view.frame.size.height - view.frame.size.height,
                                view.frame.size.width,
                                view.frame.size.height);



        // This is where I think I would need to animate the container view.

    }];
}

如何减小容器视图的大小以匹配广告的大小?我需要容器保持在同一个位置和所有东西,但需要从底部去掉一些高度

这很简单:只需在为横幅视图设置动画的同一块中设置容器帧的动画即可。它将是这样的:

[UIView animateWithDuration:1.0 animations:^ {

    view.frame = CGRectMake(0.0,
                            self.view.frame.size.height - view.frame.size.height,
                            view.frame.size.width,
                            view.frame.size.height);



     self.containerView.frame = CGRectMake( self.containerView.frame.origin.x,
                            self.containerView.frame.origin.y,
                            self.containerView.frame.size.width,
                            self.containerView.frame.size.height - view.frame.size.height);
}];
这段代码将减少您的containerView,使其与您的横幅高度相同,同时减少。你可以随心所欲地改变/适应


编辑:如果您使用的是autolayout,您应该为约束创建一个IBOutlet并设置动画,而不是帧本身。

这与我在那里编写的代码完全相同,但它根本没有做任何事情。容器视图没有更改。关于为什么会发生这种情况有什么想法吗?我实际上只是用它做了另一个测试,视图“弹出”到我们指定的正确帧,但它立即“弹出”回到原来的状态。因此,本质上,它是执行语句,然后立即向后更改这段代码,以确保只收缩cointainerView帧。如果换回来,问题就出在别的地方了。查看您的代码,您可能正在更改此视图的框架,或者类似的内容。我发现我需要更改容器的约束,而不是视图的实际大小。使用autolayout使其“弹出”回其原始状态。是的,如果使用autolayout,则应为约束创建IBOutlet并设置动画,而不是帧本身。