Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

496
Vistas
Bloqueo del hilo principal en el desplazamiento y Kingfisher configurando la imagen

He estado ejecutando un rendimiento de desplazamiento lento y he notado que cuando me desplazo y se llama a setImage con imágenes no almacenadas en caché, el rendimiento se retrasa mientras se realiza la descarga.

 if let imageURL = URL(string: presentable.imageUrl) { let resource = ImageResource(downloadURL: imageURL) photoView.kf.setImage(with: resource, options: [.transition(.fade(0.2))]) }

Tengo entendido que Kingfisher los descarga en un subproceso en segundo plano y luego los muestra en el subproceso principal, pero el subproceso principal parece estar bloqueado temporalmente. Eliminar el .transition no ayuda a la situación.

¿Alguna idea sobre cómo mejorar el rendimiento de mi desplazamiento? Gracias

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Cuando las imágenes son más grandes que la vista de la imagen, iOS necesita manipular objetos UIImage de gran tamaño, lo que puede causar tartamudeos observables en la interfaz de usuario. Puede evitar ese problema cambiando el tamaño de las imágenes antes de usarlas.

Afortunadamente, Kingfisher tiene un procesador que puede cambiar el tamaño de estos (en un subproceso de fondo) por usted. Como dice la hoja de trucos :

Uso de DownsamplingImageProcessor para imágenes de alta resolución

Piense en el caso en que queremos mostrar algunas imágenes grandes en una vista de tabla o una vista de colección. En el mundo ideal, esperamos obtener miniaturas más pequeñas para ellos, para reducir el tiempo de descarga y el uso de memoria. Pero en el mundo real, tal vez su servidor no prepare una versión en miniatura para usted. El recién agregado DownsamplingImageProcessor rescata [sic]. Reduce la muestra de las imágenes de alta resolución a un tamaño determinado antes de cargarlas en la memoria:

 imageView.kf.setImage( with: resource, placeholder: placeholderImage, options: [ .processor(DownsamplingImageProcessor(size: imageView.size)), .scaleFactor(UIScreen.main.scale), .cacheOriginalImage ])

Por lo general, DownsamplingImageProcessor se usa con .scaleFactor y .cacheOriginalImage . Proporciona una escala de píxeles de imagen razonable para su interfaz de usuario y evita descargas futuras al almacenar en caché la imagen original de alta resolución.

Creé una pequeña prueba con imágenes pequeñas y confirmé que era suave como la seda, pero cuando usé imágenes grandes, experimenté tartamudeos en el comportamiento de desplazamiento. Pero cuando agregué este DownsamplingImageProcessor en el escenario de imagen grande, volvió a ser suave como la seda.

over 4 years ago · Santiago Trujillo Denunciar

0

Actualizando

 self.imageView.contentMode = .scaleAspectFill

para

 self.imageView.contentMode = .scaleAspectFit

hizo el truco para mí.

He incrustado UICollectionView dentro UITableViewCell . Cada UICollectionViewCell tiene una vista de imagen que carga la imagen desde la URL usando Kingfisher. El desplazamiento de mi vista de tabla era muy desigual e intenté diferentes cosas, incluido no vincular el modelo y configurar los datos a cada celda. Pero nada hizo ninguna diferencia en absoluto. Una vez que cambié el modo de contenido de la vista de imagen, ahora se desplaza muy suavemente.

Según la respuesta de Rob, también es posible que se requiera configurar el modo en .scaleAspectFill para realizar algún procesamiento, aunque el tamaño de la imagen es más pequeño (incluso 480 x 320 en mi caso). Después de actualizar el modo a .scaleAspectFit , ahora se desplaza suavemente incluso para imágenes de gran tamaño.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda