ios - UIImageView configurado en imageWithData ignora contentMode
objective-c afnetworking (1)
En mi tableViewCell personalizado, tengo un imageView (no el imageView predeterminado de tableViewCell) que llena toda la celda. Está configurado en IB (y por código) con el modo de contenido UIViewContentModeAspectFill
, y se UIViewContentModeAspectFill
a los límites. Cada vez que cambio la imagen de imageView a una imagen cargada con [UIImage imageNamed:...]
, cambia el tamaño y ajusta la imagen como se desea y se espera. Sin embargo, cuando el conjunto de imágenes se carga con [UIImage imageWithData:...]
, la imagen se establece, pero no se redimensiona.
El código que carga la imagen con los datos se ejecuta en una cadena de fondo, y se ve así:
- (void)getImage:(NSString *)URL {
NSError *error = nil;
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:URL] options:NSDataReadingMapped error:&error]];
if (!error){
[self.thumbView setImage:image];
[self.thumbView setContentMode:UIViewContentModeScaleAspectFill];
}
}
He intentado configurar la imagen en el hilo principal, en layoutSubviews
, pero siempre produce el mismo resultado, no cambia de tamaño para llenar el imageView. Agregué la imagen (JPG) al paquete de la aplicación y lo [UIImage imageNamed:...]
programáticamente con [UIImage imageNamed:...]
, que funciona, pero la aplicación tiene que obtener los datos de una URL.
También traté de usar UIImageView + AFNetworking-class para configurar la imagen de forma asíncrona en lugar de crear mi propio hilo, pero eso tampoco funciona.
¿Por qué la imagen no respeta el ContentMode de UIImageView cuando se carga desde los datos? Cualquier ayuda es apreciada. Ni archivos JPEG ni PNG funcionan.
Si alguien más tropieza con el mismo problema, esto es lo que hice para solucionarlo.
Hice una nueva imageView en IB, eliminé la anterior y solo cambié el contentMode-value y clipsToBounds-value. En el código de inicio de tableViewCell.m, configuro la imagen del marcador de posición y listo: todo funciona como un amuleto.
Aunque realmente no sé qué lo causó, puede haber sido la falta de la marca de verificación del Contenido de gráficos de Clears para establecerse (¡Vaya!).