Как добавить ограничения программно к программно созданному UIView?

Я создал 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];

Однако ограничения не применяются к представлению (по крайней мере, не того, что я вижу). Вместо этого вид просто исчезает с экрана. Однако, если код ограничения комментируется, представление снова загружается с соответствующим фреймом (очевидно, без применения ограничений). При применении тех же ограничений к Button или ImageView ограничения применяются отлично. Это заставило меня думать, что проблема возникает из-за "initWithFrame" при создании представления, поскольку ни кнопка, ни ImageView на самом деле не требуют, чтобы размер был указан.

Каковы ваши мысли? Что мне делать по-другому?

Ответы

Ответ 1

Для всех, кто сталкивается с этим... Мне нужно было добавить более одного ограничения. Это сделало трюк.