Ho creato un UIView utilizzando il seguente codice all'interno viewDidLoad (dove 'secondview', ovviamente, è il nome del UIView):Come aggiungere i vincoli a livello di codice a un UIView creato a livello di codice?
secondview = [[UIView alloc] initWithFrame:self.view.frame];
[secondview setBackgroundColor: [UIColor yellowColor]];
secondview.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:secondview];
Poi entro viewDidAppear ho aggiunto i vincoli a questo punto di vista:
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:secondview attribute:NSLayoutAttributeRight
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeRight
multiplier:1.0f constant:-20.0f];
[self.view addConstraint:constraint];
Tuttavia, i vincoli non sono applicati alla vista (almeno non che io possa vedere). Invece, la vista sembra semplicemente scomparire dallo schermo. Tuttavia, se il codice del vincolo è commentato, la vista viene caricata di nuovo con il frame appropriato (ovviamente senza applicare i vincoli). Quando si applicano gli stessi vincoli a un pulsante o ImageView, i vincoli vengono applicati perfettamente. Ciò mi ha portato a pensare che il problema sia dovuto a "initWithFrame" durante la creazione della vista, dal momento che né il pulsante né ImageView richiedono effettivamente la sua dimensione.
Quali sono i tuoi pensieri? Cosa dovrei fare in modo diverso?
Sì, questo mi ha aiutato pure. A quanto pare hai bisogno di almeno due vincoli o la vista non verrà visualizzata. – JasonD
Hai bisogno di tutto il necessario per rimuovere l'ambiguità. Questo può essere solo due, ma a volte di più. (Etichette, ad esempio richiedono un minimo di due, possono dedurre la dimensione dal testo, ma è necessario dargli una X e Y) – LightningStryk