Ho il seguente vista del regolatore nel mio storyboard:Modifica vincolo a livello di codice Swift
avrà sempre 6 viste di immagini che sono, per impostazione predefinita, pari a larghezze e altezze. Ogni vista dell'immagine è vincolata alla superview con: "altezze uguali" e un moltiplicatore di 1/2.
Tuttavia, prima di caricare immagini all'interno, leggo una proprietà che mi dà l'altezza desiderata per un'immagine (la larghezza non verrà mai modificata).
Quindi la mia interfaccia (in fase di esecuzione) può apparire come segue:
Penso di aver bisogno di modificare il moltiplicatore costante ma è sola lettura.
Ho visto post che possiamo aggiornare la proprietà costante del del vincolo ma è in punti, ho bisogno che funzioni su ogni dispositivo.
Ora cosa consiglieresti? Devo rimuovere il vincolo e aggiungerne uno nuovo? Se non lo rimuovo e provo ad applicare un nuovo vincolo di altezza, verrà rimosso automaticamente per me?
Devo usare pod come lo snapkit per fare il lavoro?
Grazie per il vostro aiuto.
EDIT
Ecco il codice che ho provato, ma non ci sono riuscita:
for (index, (drawing, ratio)) in drawingElements.enumerate() {
drawingViews[index].image = UIImage(named: drawing)
// update height constraint if ratio is different than defaut ratio of 1/2
if ratio != 0.5 {
heightConstraints[index].active = false
let newHeightConstraint = NSLayoutConstraint(item: drawingViews[index], attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.Height, multiplier: ratio, constant: 0)
drawingViews[index].addConstraint(newHeightConstraint)
self.view.layoutIfNeeded()
}
}
sto facendo di sbagliato? Non sono sicuro del nuovo limite di altezza sebbene
Creare un nuovo vincolo con la costante richiesta, disattivare o rimuovere la vecchia e aggiungere la nuova –
È disattivazione/eliminazione di un vincolo diverso in termini di tempo di elaborazione? – H4Hugo
Probabilmente entrambi sono irrilevanti rispetto al rendering delle immagini, ma non lo so. Vorrei tenerlo in giro se avessi bisogno di riattivarlo più tardi ... –