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