Замена содержимого UIImage, загруженного из XIB во время выполнения - PullRequest
2 голосов
/ 09 августа 2010

Для концепции, которую я разрабатываю, мне нужно загрузить XIB-файлы вручную и, используя метод класса и экземпляра, я смог перехватить вызовы imageCustomNamed, imageCustomWithContentsOfFile и imageCustomWithCGImage для класса UIImage и initCustomWithImage для UIImageView.Я хочу определить имя изображения и заменить его содержимым, отображаемым на лету, вместо того, которое установлено в IB во время разработки.

, например:

, когда XIB имеетДля объекта UIImageView, свойство Image которого установлено в "About.png", мне нужно перехватить загрузку этого изображения и заменить его другим в зависимости от определенных условий.Было бы хорошо даже заменить изображение после того, как объект UIImageView загрузил изображение, установленное во время разработки, но похоже, что оригинальное имя UIImage, использованное для установки содержимого UIImageView, нигде не сохраняется.

Iне могу использовать IBOutlets, так как я не знаю содержимого файла XIB заранее;это класс, который должен работать на любом XIB, а не только на конкретном.

Фактически пользовательские методы вызываются вместо тех, которые используются по умолчанию, но выглядит так, что при загрузке XIb система использует imageCustomWithCGImage, который принимаетCGImageRef в качестве аргумента;из него нет способа узнать происхождение (то есть: имя файла изображения)

Есть идеи, как я могу перехватить загрузку изображений?

Ответы [ 2 ]

1 голос
/ 09 августа 2010

В OS 3, по крайней мере, вы можете переопределить initWithCoder: UIImageNibPlaceholder. Замените его на что-то вроде этого:

-(id)hack_UIImageNibPlaceholder_initWithCoder:(NSCoder*)coder
{
  NSString * name = [coder decodeObjectForKey:@"UIResourceName"];
  [self release];
  return [[UIImage imageNamed:name] retain];
}

Я не уверен, что произойдет, если вы загрузите перья из других пакетов (например, фреймворков).

0 голосов
/ 13 марта 2011

Возможно, вы можете установить другое свойство UIImageView в xib-файле, а затем ссылаться на это свойство?Например, метка или тег ...

...