UIImageView установлен в imageWithData игнорирует contentMode

В моем собственном tableViewCell у меня есть imageView (не imageView по умолчанию tableViewCell), который заполняет всю ячейку. Он устанавливается в IB (и по коду) с помощью contentMode UIViewContentModeAspectFill, и это обрывает границы. Всякий раз, когда я меняю изображение imageView на изображение, загруженное с [UIImage imageNamed:...], он изменяет размеры и соответствует imageView, как желаемый и ожидаемый. Однако, когда набор изображений загружен [UIImage imageWithData:...], изображение установлено, но не изменено.

Код, который загружает изображение с данными, запускается в фоновом потоке и выглядит так:

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

Я попытался установить изображение в главном потоке, в layoutSubviews, но он всегда дает один и тот же результат - он не изменяет размер, чтобы заполнить imageView. Я добавил изображение (JPG) в комплект приложений и установил его программно [UIImage imageNamed:...], который работает, но приложение должно получать данные из URL.

Я также попытался использовать UIImageView+AFNetworking-class для установки асинхронного изображения вместо создания собственного потока, но это тоже не работает.

Почему изображение не соответствует contentMode UIImageView, когда оно загружается из данных? Любая помощь приветствуется. Ни JPEG, ни PNG не работают.

1 ответ

Решение

Если кто-то еще сталкивается с той же проблемой, вот что я сделал, чтобы исправить это.

Я сделал новый imageView в IB, удалил старый и изменил только значения contentMode и clipsToBounds-value. В init-коде tableViewCell.m я установил изображение-заполнитель, и вуаля - все работает как шарм.

Хотя я на самом деле не знаю, что вызвало это, возможно, это была ошибка флажка "Очистить графическое содержимое" (упс).

Другие вопросы по тегам