2015-05-11 21 views
6

Sto cercando di creare una cella di visualizzazione tabella con una foto e di avvolgere il testo con layout automatico. Ho gestito molto con il layout automatico, ma non riesco a capire come farlo.Cella di tabella di Autolayout con campi immagine e testo?

┌─────────────────────────────────────────────────────┐ 
│ ┌──────────┐ ┌────────────────────────────────────┐ │ 
│ │   │ │ Title (might wrap)     │ │ 
│ │   │ └────────────────────────────────────┘ │ 
│ │ Photo │ ┌────────────────────────────────────┐ │ 
│ │   │ │ Body text. May wrap, may contain │ │ 
│ │   │ │ multiple lines.     │ │ 
│ │   │ └────────────────────────────────────┘ │ 
│ └──────────┘          │ 
└─────────────────────────────────────────────────────┘ 

Mentre il testo si espande, voglio mantenere la foto in alto a sinistra ed espandere la cella. Tuttavia, la cella non dovrebbe mai ridursi al di sotto del minimo richiesto per mostrare la foto (con margini).

┌─────────────────────────────────────────────────────┐ 
│ ┌──────────┐ ┌────────────────────────────────────┐ │ 
│ │   │ │ Title (might wrap)     │ │ 
│ │   │ │ Maybe even to two lines.   │ │ 
│ │ Photo │ └────────────────────────────────────┘ │ 
│ │   │ ┌────────────────────────────────────┐ │ 
│ │   │ │ Body text. May wrap, may contain │ │ 
│ │   │ │ multiple lines.     │ │ 
│ └──────────┘ │         │ │ 
│    │ Text could require more vertical │ │ 
│    │ space than the photo.    │ │ 
│    └────────────────────────────────────┘ │ 
└─────────────────────────────────────────────────────┘ 

Sto richiedendo iOS 8 o successivo.

Ho provato a farlo con solo le tre viste elencate e anche inserendo gli elementi di sinistra e di destra in due viste. Ogni combinazione che provo sembra ignorare la dimensione minima della foto.

(Btw, per chiunque sia curioso:. Graphic via Monodraw)

+0

Forse è assicurarsi rowHeight del TableView è 'UITableViewAutomaticDimension'. E hai impostato la stima di altezza in eccesso su qualcosa di più grande dell'altezza media della vista dell'immagine? – Tobias

+0

Upvote per l'arte ASCII;) –

+0

Qualcuno ha codice o un progetto che sarebbe disposto a pubblicare per questa soluzione? Ho un layout simile e lo faccio per lo più funzionante, tranne che non riesco a ottenere il titolo di avvolgere completamente ...sembra tagliato con un'ellisse dopo un numero arbitrario di caratteri. "Linee" è 0 e "Interruzione di linea" è "A capo automatico". – Jason

risposta

2

provare con le seguenti relazioni:

Foto:

  • width = X
  • height = Y
  • sinistra = Cell + Z
  • top = Cell + Z

Titolo:

  • sinistra = Foto + Z
  • destra = cellulare - Z
  • top = cellulare + Z

l'etichetta automaticamente calcolare l'altezza in base al contenuto

Corpo:

  • Sinistra = Titolo
  • destra = Titolo
  • Top = Title.Bottom + Z

cellulare: (questa è la parte importante)

  • inferiore> = (uguale ao maggiore di) Body.Bottom + Z
  • Fondo> = Photo.Bottom + Z

questo costringerà la cellula di essere, in ogni momento, sia più alto rispetto all'immagine + offset o più alto l'etichetta + compensato

+0

Ho provato esattamente questo, ma la foto non mantiene la cella alla dimensione minima. Inserirò un elenco in un'ora. –

+0

Non importa, avevi ragione. In qualche modo avevo un vincolo * extra * in quello che lo stava sporcando. I miei ringraziamenti. Questo mi stava facendo impazzire; sembrava così semplice! –

+0

Contento di aver potuto aiutare! –

Problemi correlati