如何在iOS中以编程方式从基本UIViewController向我的所有视图控制器添加视图

时间:2016-03-11 06:52:59

标签: ios iphone autolayout

我的应用程序中有四个视图控制器,都是从一个普通的UIViewController类扩展而来的。我想在底部为我的所有视图控制器添加一个视图。

现在我在基础视图控制器的viewDidLoad方法中添加该视图,如此

UIView *contentView = [[UIView alloc]initWithFrame:self.view.frame];
UIView *wrapperView = [[UIView alloc]initWithFrame:self.view.frame];
UIView *commonView = [[UIView alloc]init];
commonView = <common view>;
[contentView setTranslatesAutoresizingMaskIntoConstraints:NO];
[wrapperView setTranslatesAutoresizingMaskIntoConstraints:NO];


wrapperView.backgroundColor = [UIColor blueColor];
contentView.backgroundColor = [UIColor greenColor];

contentView = self.view;
[wrapperView addSubview:contentView];
[wrapperView addSubview:commonView];
self.view = wrapperView;

当我关闭特定故事板的自动布局时,这工作正常。但是当我启用autolayout时,我在屏幕上显示绿色(contentView)。

在上面的代码运行之前,视图控制器有9个自动布局约束,在上面的代码片段之后,对self.view没有约束

有没有办法添加self.view的autolayout约束?

1 个答案:

答案 0 :(得分:0)

删除此行:

contentView = self.view;

该行导致contentView(代码的第一行)的初始化基本上是无操作。

为什么在添加视图时尝试重置整个布局?看起来你可以初始化commonView并将其直接添加到self.view:

UIView *commonView = [[UIView alloc] init];
commonView = <common view>;
[self.view addSubview:commonView];