2013-07-09 6 views
5

Ho una cella personalizzata con una sottoview al suo interno che al raggiungimento di contenuto dal server aumenta in altezza una volta che la risposta arriva.Come aumentare l'altezza della cella e l'altezza della subview allo stesso tempo con l'animazione?

Così aumento l'altezza di questa sottoview con l'animazione e, al termine dell'animazione, invio un messaggio delegato a viewController.

in questo delegato I impostare una variabile un'istanza con nuovo valore per l'altezza della cella e chiamare

[tableView beginUpdates]; 
[tableView endUpdates]; 

dopo quello che ha appena ridimensiona la cella con nuova altezza con animazioni fluide. ma poiché questo metodo delegato viene chiamato nel blocco di completamento dell'animazione precedente, succede dopo di esso.

C'è un modo per far sì che entrambi avvengano senza intoppi?

+0

Hai provato ad autorizzare la visualizzazione secondaria rispetto alla cella? – satheeshwaran

+0

ma il mio problema è che conoscerò solo l'altezza della cella quando la vista secondaria si ridimensiona a nuova altezza o in pratica mi stai dicendo di ottenere la nuova altezza ridimensionare la cella con una chiamata delegata e lasciare ridimensionare le schermate con la maschera di autorizzazione invece di impostare la cornice io stesso con l'animazione? hmm ... Non l'ho provato, mi sembra una buona idea. –

risposta

0

Dovresti creare animazione in 1 funzione di animazione. Quando si riceve nuova animazione di avvio altezza (è possibile utilizzare i livelli di trasformazione)

1

Proprio

1) modificare l'altezza visualizzazione secondaria direttamente senza animazione,

2) impostare la nuova cellHeight della cella in heightForRowAtIndexPath,

e

3) aggiornare la tabella con animazione. In tal caso, sia la sottoview che la cella animeranno correttamente.

1

Utilizzare NSLayoutConstraint .. così che quando una cella cambia automaticamente altezza e larghezza, la visualizzazione secondaria cambierà anche altezza e larghezza.

NSLayoutConstraint *myConstraint1 = [NSLayoutConstraint constraintWithItem:cell 
            attribute:NSLayoutAttributeWidth 
            relatedBy:NSLayoutRelationEqual 
            toItem:subView 
            attribute:NSLayoutAttributeWidth 
            multiplier:1.0 
            constant:-5]; 

NSLayoutConstraint *myConstraint2 = [NSLayoutConstraint constraintWithItem:cell 
            attribute:NSLayoutAttributeHeight 
            relatedBy:NSLayoutRelationEqual 
            toItem:subView 
            attribute:NSLayoutAttributeHeight 
            multiplier:1.0 
            constant:-5]; 

[cell addConstraint:myConstraint1]; 
[cell addConstraint:myConstraint2]; 

Regolare il constant in base alle proprie esigenze.

Spero che questo ti possa aiutare.

+0

Questi vincoli di AutoLayout sono? Non sto usando AutoLayouts. –

+1

No ... NSLayoutConstraint definisce solo la relazione tra gli attributi (altezza, larghezza, ecc) di due punti di vista - http://developer.apple.com/library/ios/#documentation/AppKit/Reference/NSLayoutConstraint_Class /NSLayoutConstraint/NSLayoutConstraint.html –

Problemi correlati