2012-04-25 6 views
2

Я использую стороннюю библиотеку, HJCacheClasses, для асинхронного погрузки изображений. Вот код для того же. его довольно много простоsetContentMode: для HJManagedImageV не работает для iOS

NSMutableString *url = @"my url"; 
    HJManagedImageV *asyncImageView = [[HJManagedImageV alloc] initWithFrame:frame]; 
    [asyncImageView setBackgroundColor:[UIColor grayColor]]; 
    [asyncImageView showLoadingWheel]; 
    [asyncImageView setContentMode:UIViewContentModeScaleAspectFill]; 
    [asyncImageView.imageView setContentMode:UIViewContentModeScaleAspectFill]; 
    asyncImageView.url = [NSURL URLWithString:url]; 

    [self.imageManager manage:asyncImageView]; 
    [the_pScrollView addSubview:asyncImageView]; 

все работает отлично, за исключением, что изображение по центру и не получает растягиванию/установлены в соответствии с размером представления (который имеет размер полного экрана). Я знаю, что изображение маленькое, но мне нужно сделать его подходящим в представлении, чтобы заполнить представление. но не из setContentMode работают.

Любая идея

Пожалуйста стрелять Раджа

ответ

0

Я нашел ответ сам, который я чувствую, более прост и прост. Как я уже упоминал, в исходном коде класса HJManagedImageV автор жестко закодировал imageView экземпляра HJManagedImageV, чтобы всегда соответствовать аспекту. Так что я просто заметил, что код ... Для тех, кто любит делать то же самое выполните следующие действия

  1. Перейти к HJManagedImageV.m файл
  2. поиска для метода с именем

    - (Недействительными) setImage: (UIImage *) theImage

  3. строка комментария imageView.contentMode = ... ИЛИ установить режим контента, который вы хотите для ImageView. Примечание. Это позволит установить режим содержимого для всех изображений с использованием этого класса. Поэтому я предпочитаю использовать первый вариант.

  4. В коде, в котором вы используете этот класс, установите режим содержимого для HJManagedImageV.

Вот это ... Enjoy

+1

Радж, каждый время, когда вы обновляете библиотеку с более новой версией, вам придется просмотреть исходный код и настроить его определенным образом. Подумай об этом –

4

Если вы посмотрите на исходный код класса HJManagedImageV, вы заметите, что автор зашиты в ImageView экземпляра HJManagedImageV всегда быть аспект нужным. Таким образом, по умолчанию вы никогда не сможете работать в режиме наполнения аспектным заполнением.

Там простой способ для достижения этой цели, хотя, сразу после установки URL-адрес свойства зрения управляемого изображений, также добавить функцию обратного вызова на свой собственный класс, например, так:

myImageView.callbackOnSetImage = (id)self; 

И в функции обратного вызова установите желаемый contentMode для imageView, точно так же. Это проверено и работает для меня. Удачи

-(void) managedImageSet:(HJManagedImageV*)mi 
{ 
    mi.imageView.contentMode = UIViewContentModeScaleAspectFill; 
} 
+0

Спасибо за обратную связь ... Я попробовал ваше решение, и это работает ... но ниже то, что я думаю, что более проще ... – Nik