Animazioni all'interno dei layoutsubviews?
-
12-11-2019 - |
Domanda
Ho una vista (lstabbarview) che supporta l'inserimento / la cancellazione di nuovi elementi con i seguenti metodi:
- (void)insertItem:(LSTabItem *)item atIndex:(NSUInteger)index animated:(BOOL)animated;
- (void)removeItemAtIndex:(NSUInteger)index animated:(BOOL)animated;
.
lstabitem è l'oggetto che rappresenta la mia classe del modello. Ogni volta che un nuovo elemento viene aggiunto con INSERTITEM: ATIDEX: animato: viene creata una nuova sottoview (LSTABControl) utilizzando le informazioni all'interno di questo oggetto modello, quindi aggiunto alla vista principale, e infine LayoutSuSuSuSus è chiamata per ricalcolare il fotogramma di ciascuno sottoviews.
Ho appena implementato queste operazioni ma il parametro "animato" non viene utilizzato per ora e Mi stavo chiedendo dove dovrei mettere il codice per gestire l'animazione quando animato è sì.
Questi sono i metodi rilevanti:
.
- (void)insertItem:(LSTabItem *)item
atIndex:(NSUInteger)index
animated:(BOOL)animated
{
...
LSTabControl *tab = [self _configureNewTabControlForItem:item atIndex:index];
[tabItems insertObject:item atIndex:index];
[tabViews insertObject:tab atIndex:index]; // array which contains all the subviews
[self setNeedsLayout];
}
- (void)removeItemAtIndex:(NSUInteger)index
animated:(BOOL)animated
{
...
LSTabControl *tab = [tabViews objectAtIndex:index];
...
[tab removeFromSuperview];
[tabViews removeObjectAtIndex:index];
[tabItems removeObjectAtIndex:index];
[self setNeedsLayout];
}
Quali sono fondamentalmente layoutsubviewsEvies per mettere tutte le sottoviews in una sequenza orizzontale lineare una dopo l'altra applicazione di un imbottitura tra ciascuna sottoview. Ogni sottoview potrebbe avere una larghezza o un'altezza diversa (non sono di dimensioni fisse). Quando un nuovo elemento viene aggiunto con l'animazione impostata su Sì (diciamo all'indice= 2) Voglio che ogni sottoviews da indice + 1 ai numerici venga spostato a destra e quindi la nuova sottoview appaiono nel foro disponibile.
Voglio che ovviamente LSTABBARView sia estensibile, quindi nella mia implementazione di base di questi metodi non riesco a fare supposizioni su come le sottoviews saranno disposte da sottoclassi (ad esempio una sottoclasse potrebbe sovrascrivere la layoutsubviews e decidere di disporre degli elementi in un layout verticale Invece di orizzontale e come conseguenza decide di spostare ogni sottoviews invece di a destra quando si aggiungono nuovi elementi ...)
Non voglio sapere come eseguire l'animazione (so già come farlo) ma qual è l'approccio corretto come animare l'aspetto di una nuova sottoview, considerando le mie esigenze sopra descritte.
Dovrei considerare di eseguire tutte le animazioni all'interno di LayoutSuSubViews o inserisce il codice di animazione all'interno di InsertItem / EmiTitem Leting LayoutSuSuSupviews Solo per calcolare il layout sottoviews?
Grazie
Soluzione
layoutSubviews
significava essere un metodo rapido a un colpo.Utilizzare meglio il tuo insertItem:
per l'animazione.