Sto cercando di creare una vista contenitore personalizzata che abbia UIImageView e una UILabel multilinea come subviews. Per far funzionare bene con vista autolayout, sono sovrascrivendo intrinsicContentSize come di seguito:UIView con altezza dinamica che utilizza intrinsicContentSize
- (CGSize)intrinsicContentSize
{
return [self sizeThatFits:self.bounds.size];
}
La dimensione calcolato sizeThatFits ha la stessa larghezza, e regola l'altezza in modo che l'etichetta e l'immagine non sono tagliati. Questo metodo funziona bene, ma sono rimasto sorpreso di vedere nella documentazione il seguente commento:
Questa dimensione intrinseca deve essere indipendente dal frame del contenuto, perché non c'è modo di comunicare in modo dinamico una larghezza modificato al sistema di layout in base a un'altezza modificata, ad esempio.
In tal caso, qual è il metodo di passaggio automatico per regolare l'altezza corrente delle viste in base alla larghezza e al contenuto? Dovrei avvicinarmi a questo in un modo diverso?
Se si desidera evitare che il contenuto venga ritagliato, è la priorità di resistenza alla compressione della vista del contenitore che deve essere aumentata. –
La resistenza alla compressione è la priorità alla quale una vista resiste a essere ridotta rispetto alla sua dimensione intrinseca del contenuto. Se la dimensione del contenuto intrinseco non è corretta, questo non sarà di grande utilità. – Tark