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

È stato utile?

Soluzione

layoutSubviews significava essere un metodo rapido a un colpo.Utilizzare meglio il tuo insertItem: per l'animazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top