如何以编程方式将约束添加到以编程方式创build的UIView?

我已经创build了一个UIView在viewDidLoad中使用以下代码(其中'secondview'显然是UIView的名称):

secondview = [[UIView alloc] initWithFrame:self.view.frame]; [secondview setBackgroundColor: [UIColor yellowColor]]; secondview.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:secondview]; 

然后在viewDidAppear中,我添加了这个视图的约束:

 NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:secondview attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0f constant:-20.0f]; [self.view addConstraint:constraint]; 

但是,约束不适用于视图(至less不是我所能看到的)。 相反,这个视图简直似乎从屏幕上消失了。 然而,如果约束代码被注释掉了,视图会再次加载相应的框架(显然没有应用约束)。 当对Button或ImageView应用相同的约束时,约束将被完美应用。 这导致我认为这个问题是因为创build视图时的“initWithFrame”,因为button和ImageView实际上都不需要指定它的大小。

你怎么看? 我应该做什么不同?

对于任何遇到此问题的人…我需要添加多个约束。 那就是诀窍。