Pregunta

Tengo una vista (LSTABBARVIEW) que admite la inserción / eliminación de nuevos elementos con los siguientes métodos:

- (void)insertItem:(LSTabItem *)item atIndex:(NSUInteger)index animated:(BOOL)animated; 
- (void)removeItemAtIndex:(NSUInteger)index animated:(BOOL)animated;

lstabitem es el objeto que representa mi clase de modelo. Cada vez que se agrega un nuevo elemento con InsertItem: ATINDEX: Animated: se crea una nueva subviega (LSTABCONTROL) utilizando las informaciones dentro de este objeto modelo, luego se agrega a la vista principal, y finalmente se llama LayoutsubViews para recalcular el marco de cada Subvistas.

Acaba de implementar estas operaciones, pero el parámetro "animado" no se usa para ahora y me preguntaba dónde debo poner el código para manejar la animación cuando se anima es sí.

Estos son los métodos relevantes:

- (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];
}

Lo que los LEAUTSUBVISHS HACE es básicamente a colocar todas las Subvistas en una secuencia horizontal lineal una después de otra aplicación de un relleno entre cada subviega. Cada subvisión podría tener una anchura o altura diferente (no son un tamaño fijo). Cuando se agrega un elemento nuevo con la animación establecida en SÍ (digamos en el índice= 2) Quiero que cada subviega de índice + 1 a los números se cambia a la derecha y luego aparecerá la nueva subviega en el orificio disponible.

Obviamente, quiero ser extensible, por lo que en mi implementación de la base de estos métodos no puedo hacer suposiciones sobre cómo se organizarán las subviews (por ejemplo, una subclase podría anular los aspiradores de los aspiradores y decidir diseñar los elementos en un diseño vertical en lugar de horizontal y, según la consecuencia, decide cambiar cada subvención en lugar de a la derecha cuando agregue nuevos elementos ...)

No quiero saber cómo realizar la animación (ya sé cómo hacerlo), pero ¿cuál es el enfoque correcto cómo animar la apariencia de una nueva subvisión, considerando mis requisitos descritos anteriormente?

¿Debo considerar realizar todas las animaciones dentro de Layoutsubviews o coloca el código de animación dentro de Insertartem / removeItem Polding LEYOUTSUBVIOS SOLO PARA CALCULAR EL DISEÑO DE SUBVEQUES?

gracias

¿Fue útil?

Solución

layoutSubviews significa ser un método rápido de un disparo.MEJOR UTILICE SU GENTACODICETROGUEDO PARA LA ANIMACIÓN.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top