La risposta è [view layoutIfNeeded].
Ecco perché:
Puoi comunque ottenere la larghezza e l'altezza correnti della vista ispezionando view.bounds.size.widthe view.bounds.size.height(o il fotogramma, che è equivalente a meno che tu non stia giocando con il view.transform).
Se quello che vuoi è la larghezza e l'altezza implicite dai tuoi vincoli esistenti, la risposta è di non ispezionare i vincoli manualmente, poiché ciò richiederebbe di reimplementare l'intera logica di risoluzione dei vincoli del sistema di layout automatico per interpretarli vincoli. Invece, quello che dovresti fare è semplicemente chiedere al layout automatico di aggiornare quel layout , in modo che risolva i vincoli e aggiorni il valore di view.bounds con la soluzione corretta, quindi ispezioni view.bounds.
Come chiedi al layout automatico di aggiornare il layout? Chiama [view setNeedsLayout]se desideri che il layout automatico aggiorni il layout alla svolta successiva del ciclo di esecuzione.
Tuttavia, se si desidera che aggiorni immediatamente il layout, in modo da poter accedere immediatamente al nuovo valore dei limiti in un secondo momento all'interno della funzione corrente o in un altro punto prima della svolta del ciclo di esecuzione, è necessario chiamare [view setNeedsLayout]e [view layoutIfNeeded].
Hai posto una seconda domanda: "come posso modificare un vincolo di altezza / larghezza se non ho un riferimento diretto ad esso?".
Se si crea il vincolo in IB, la soluzione migliore è creare un IBOutlet nel controller della vista o nella vista in modo da avere un riferimento diretto ad esso. Se hai creato il vincolo nel codice, dovresti mantenere un riferimento in una proprietà debole interna nel momento in cui lo hai creato. Se qualcun altro ha creato il vincolo, è necessario trovarlo esaminando la proprietà view.constraints sulla vista e possibilmente l'intera gerarchia della vista e implementando la logica che trova NSLayoutConstraint cruciale. Questo è probabilmente il modo sbagliato di procedere, poiché richiede anche di determinare quale particolare vincolo ha determinato la dimensione dei limiti, quando non è garantita una risposta semplice a quella domanda. Il valore dei limiti finali potrebbe essere la soluzione a un sistema molto complicato di vincoli multipli,