sirve que puedo promocionar porque para las fotos descargar cierra carga app ampliar abrir ios uitableview uiimageview uiviewanimation

ios - que - Acercamiento de fotos de estilo de aplicación de Facebook desde UITableView/Feed



porque no carga facebook en mi iphone (1)

¿Estoy en el camino correcto? Si es así, ¿cómo llevo el imageView desde la celda a la vista frontal y lo mantengo en la misma posición?

Creo que tienes razón en los pasos conceptuales. No es difícil obtener la imageView de la celda y agregarla a la vista de controladores. Puedes usar los métodos como

- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view

para obtener la posición correcta para la vista de la imagen.

Cuando desliza a otra imagen, la imagen original se ''restaura'' en su ubicación original en la celda de la vista de tabla. ¿Esto realmente solo está moviendo un imageView de una vista a otra? ¿Cómo diablos lo envía de vuelta a la celda original? Mantenga un puntero a esa celda cuando el usuario toque la imagen, y luego haga algo como customCell.imageViewContainerView addSubview: originalImageView? ¿Esto debe invertirse si el usuario regresa a la imagen original?

Creo que esto se hace mediante algún tipo de protocolo entre la galería y los controladores de vista de tabla. Tal vez solo esconde / muestra la imagen, y las imágenes en la galería son en realidad un objeto diferente. De todos modos, si desea utilizar la misma vista de imagen, puede enviar el objeto con el protocolo entre los dos controladores.

Espero que esto ayude un poco;) Creo que esa clave está en los métodos convertRect.

En la aplicación de Facebook, cuando estás en el feed y tocas una foto para verlo, suceden algunas cosas:

  1. La imagen se mueve / anima al centro de la pantalla, sin importar su posición actual en la vista de tabla (centro, parcialmente fuera de la pantalla hacia abajo, arriba, lo que sea)

  2. A medida que la imagen se mueve al centro de la pantalla, el resto de la vista de tabla se desvanece (alfa = 0)

  3. Cuando arrastra la imagen hacia arriba o hacia abajo, el alfa de la vista de tabla se restaura proporcionalmente (creo) al desplazamiento de la imagen desde el centro de la pantalla

  4. En este punto, observará que en el feed, el lugar donde solía estar la imagen, ahora está vacío (lo que le da la impresión de que ''trajo'' esa imagen por adelantado). Usted ve esto arrastrando la imagen hacia arriba / abajo y puede ver la vista de alimentación / tabla detrás de la imagen.

  5. Siguiendo con el n. ° 2, si la imagen ya es proporcional (es decir, la vista previa de la imagen en la vista de Alimentación / tabla fue una escala proporcional sin ningún recorte), se mueve hacia el centro. Si la imagen fue recortada en absoluto (porque era demasiado alta, etc. para caber correctamente en la alimentación), entonces el resto de la imagen se revela al mismo tiempo que se mueve al centro de la pantalla.

  6. Una vez que la imagen se mueve hacia el centro de la pantalla, aparecen los elementos del controlador de vista de galería (botón Hecho, botones Me gusta / Comentario, etc.)

  7. Siguiendo # 4, si deslizas hacia otra imagen (desliza hacia la izquierda / derecha en la vista de imagen de pantalla completa a otra imagen en el mismo álbum), y luego intentas arrastrar hacia arriba / abajo en # 3, verás que la primera la imagen vuelve a donde estaba en el Feed.

  8. Finalmente, si arrastra la imagen hacia arriba o hacia abajo más allá de un cierto umbral, se descarta y el Feed se revela nuevamente.

Esto es lo que creo que está sucediendo conceptualmente, y me gustaría obtener alguna confirmación si este es el enfoque correcto (estas viñetas a continuación no se corresponden con las viñetas anteriores):

  1. Cuando el usuario toque una imagen, agregue esa vista de imagen como una subvista de la vista de contenedor de la vista de tabla, pero agréguela exactamente en la misma posición para que no se vea el movimiento de la vista de imagen desde la celda hacia la vista principal.

  2. Luego anima el movimiento de esa imagen hacia el centro de la pantalla. Al mismo tiempo, reduzca el alfa de la vista de tabla para que llegue a 0 al mismo tiempo que el imageView llega al centro de la pantalla.

  3. Una vez que la imagen llega al centro de la pantalla, presione un controlador de vista modal sin animarlo, y agregue el imageView como una subvista de la vista del controlador de vista modal (efecto # 6 arriba)

  4. Cualquier arrastre de la imagen reduce el alfa del controlador de vista modal y aumenta el alfa de la vista de la tabla de alimentación (efecto n. ° 3 anterior) y arrastrando encima de un cierto umbral desencadena la animación que oculta la galería y muestra la alimentación de nuevo (efecto n. ° 8 encima)

Preguntas:

  1. ¿Estoy en el camino correcto? Si es así, ¿cómo llevo el imageView desde la celda a la vista frontal y lo mantengo en la misma posición?

  2. Cuando desliza a otra imagen, la imagen original se ''restaura'' en su ubicación original en la celda de la vista de tabla. ¿Esto realmente solo está moviendo un imageView de una vista a otra? ¿Cómo diablos lo envía de vuelta a la celda original? Mantenga un puntero a esa celda cuando el usuario toque la imagen, y luego haga algo como customCell.imageViewContainerView addSubview:originalImageView ? ¿Esto debe invertirse si el usuario regresa a la imagen original?

Todo esto para mí parece una implementación no trivial, pero creo que el efecto es asombroso y también tengo una maldita curiosidad sobre cómo se hace. ¿Estoy pensando demasiado y realmente hay una forma realmente fácil de hacerlo, o estoy en lo correcto al dar props a quien escribió la aplicación FB?