对于我正在开发的概念,我需要手动加载 XIB 文件,并通过使用类和实例方法调配,我已经能够拦截对 UIImage 类的 imageCustomNamed、imageCustomWithContentsOfFile 和 imageCustomWithCGImage 的调用以及 UIImageView 的 initCustomWithImage 调用。我想要的是检测图像名称并将其替换为动态呈现的一些内容,以代替设计时在 IB 中设置的内容。
例如:
当 XIB 有一个 UIImageView 对象,其 Image 属性设置为“About.png”时,我需要拦截该图像的加载并根据特定条件替换为另一个图像。在 UIImageView 对象在设计时加载图像集之后替换图像也可以,但看起来用于设置 UIImageView 内容的 UIImage 的原始名称没有存储在任何地方。
我不能使用 IBOutlets,因为我事先不知道 XIB 文件的内容;这是一个应该在任何 XIB 上工作的类,而不仅仅是一个特定的类。
自定义方法实际上被调用以代替默认方法,但看起来在加载 XIb 时系统使用接受 CGImageRef 作为参数的 imageCustomWithCGImage;从中无法知道来源(即:图像文件名)
关于如何拦截图像加载的任何想法?