Для концепции, которую я разрабатываю, мне нужно загрузить XIB-файлы вручную, и с помощью swizzling методов класса и экземпляра я смог перехватить вызовы imageCustomNamed, imageCustomWithContentsOfFile и imageCustomWithCGImage для класса UIImage и initCustomWithImage для UIImageView. Я хочу определить имя изображения и заменить его некоторым содержимым, отображаемым на лету, вместо того, что установлено в IB во время разработки.
Например:
когда XIB имеет объект UIImageView, для свойства Image которого установлено значение «About.png», мне нужно перехватить загрузку этого изображения и заменить его другим в зависимости от определенных условий. Было бы нормально даже заменить изображение после того, как объект UIImageView загрузил набор изображений во время разработки, но похоже, что исходное имя UIImage, используемое для установки содержимого UIImageView, нигде не хранится.
Я не могу использовать IBOutlets, так как заранее не знаю содержимое файла XIB; это класс, который должен работать на любом XIB, а не только на конкретном.
Пользовательские методы на самом деле вызываются вместо методов по умолчанию, но похоже, что при загрузке XIb система использует imageCustomWithCGImage, которые принимают CGImageRef в качестве аргумента; из него невозможно узнать происхождение (т.е. имя файла изображения)
Любая идея о том, как я могу перехватить загрузку изображений?