[objective-c] iOS8: i vincoli suggeriscono ambiguamente un'altezza pari a zero



Answers

Ciò che si può fare è aggiungere i vincoli verticali dall'alto e dal basso della vista del contenuto. Questo renderà felice l'autolayout (perché ora sa come calcolare l'altezza della cellula).

Question

Qualcuno ha qualche idea su come eseguire il debug di questo?

Avviso solo una volta: rilevato un caso in cui i vincoli suggeriscono ambiguamente un'altezza pari a zero per la vista del contenuto di una cella tableview. Stiamo considerando il collasso involontario e utilizzando invece l'altezza standard.

Le file hanno un'altezza fissa come impostato da

- (CGFloat)tableView:(UITableView *)tableView 
           heightForRowAtIndexPath:(NSIndexPath *)indexPath{
   return 34.0;
}

E tutti i constraints sembrano essere felici ...







Ci sono due cose importanti che accadono qui, penso.

1) È molto semplice rendere i vincoli sbagliati se si fa CTRL + trascinamento. Quindi, controlla di averlo fatto correttamente. Meglio usare il vassoio sul lato sinistro dello schermo per disegnare questi vincoli.

2) Invece di specificare il valore AverageRowHeight in ViewDidLoad o da qualche altra parte, utilizzare il metodo delegate

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {}

Questo ha risolto il problema subito per me.




Nel mio caso, è perché sto progettando la cella con xib, e ho dimenticato di aggiungere quel file xib alla destinazione.

Dopo aver aggiunto il file xib alla destinazione, il problema è scomparso




I vincoli possono essere felici ai fini del layout, ma non sono soddisfatti allo scopo dell'altezza automatica della riga. Un layout felice significherebbe che il contenuto può essere presentato senza ambiguità. Ciò soddisferebbe i controlli in Interface Builder.

Un layout felice per l'altezza automatica delle righe significherebbe che, oltre a quanto sopra, includerai anche i vincoli sul fondo della cella.

Altro qui: Rilevato un caso in cui i vincoli suggeriscono ambiguamente un'altezza pari a zero




Per una correzione standard di bog, nessun vincolo, nessuna altezza di stima o sovrastima del problema. Ho creato un progetto predefinito, cablato il tableview ma ho dimenticato di mettere il delegato dell'altezza nel controller della vista . Per fare in modo che questo avviso vada via è necessario.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 44;
}

Nel controller di visualizzazione della tabella.




Sembra esserci un bug in XCode 6.1 che causa questo problema se si utilizza il layout automatico e non si specifica un valore per l'altezza della riga per ogni cella di visualizzazione tabella, ma si lascia invece il valore "predefinito". Semplicemente selezionando la casella di controllo "Personalizzato" accanto all'altezza della riga, per ogni cella, l'avviso scompare.




Non sono riuscito a rimuovere l'avviso, ma per far funzionare i vincoli ho impostato la proprietà newview su iOS8, tableview EstimateRowHeight sull'altezza fissa e l'implementazione heightForRowAtIndexPath rimossa.




Related