程序化大小改变后,UIView不会保持调整大小?

Blu*_*ear 2 iphone objective-c uiview ios

我有一个UIViewControllerUIView内的容器.我在屏幕上显示广告时会调整该容器的大小,以说明广告在屏幕上占用的差异.问题是视图会调整大小,然后立即更改回来.我现在尝试了多件事但没有成功.

我已经努力在viewDidLoad方法中调整容器视图的大小,但它没有做任何事情.我也试过设置self.view.autoresizesSubviews = NO;我的目标是让视图以与我的广告动画到屏幕上的方法相同的方式设置尺寸更改动画.不管我做什么,尺寸变化都不会停留.

我用来设置框架的代码:

CGRect rectFrame = CGRectMake(self.tableViewController.frame.origin.x,
                                  self.tableViewController.frame.origin.y,
                                  self.tableViewController.frame.size.width,
                                  self.tableViewController.frame.size.height - 300);

self.tableViewController.frame = rectFrame;
Run Code Online (Sandbox Code Playgroud)

rde*_*mar 5

这是因为自动布局,默认情况下处于启用状态.您需要关闭它,或通过动画约束设置动画大小更改,而不是设置框架.要将约束设置为视图底部的动画,请为其创建一个IBOutlet(我将其称为bottomCon),并修改其常量参数:

[UIView animateWithDuration:1 animations:^{
        self.bottomCon.constant = 300;
        [self.view layoutIfNeeded];
    } completion:nil]; 
Run Code Online (Sandbox Code Playgroud)