有什么方法可以找出 XIB 中使用的图像代号,例如按钮的背景?
假设我有一个带有按钮的 xib,它的属性背景(对于状态配置:默认)设置为“button.png”,按钮有一个 IBOutlet,例如 myButton。当我的 View 是从 xib 创建的时,我可以通过以下方式轻松访问图像:[myButton backgroundImageForState:UIControlStateNormal] 但它当然是 UIImage,但我需要找到 xib 中使用的图像名称(“button.png”)。
我尝试子类化 UIButton 并在 initWithCoder:(NSCoder *)aDecoder 中找到 NSCoder 的东西,但没有结果
定义按钮背景的 xib 部分是
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">button.png</string>
</object>
正在尝试类似的东西:
NSObject * obj = [aDecoder decodeObjectForKey:@"IBUINormalBackgroundImage"];
但不起作用(从 nib 初始化时如何使用 NSCoder?)
也试图覆盖
-(void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state{
[super setBackgroundImage:image forState:state];
}
但从未被调用,但在 awakeFromNib 中,所有内容都已初始化并加载。
有人可以解释/帮助解决这个问题吗?
最佳答案
是的,一旦是 UIImage,就不会保留原始文件名的引用。
但如果您需要从 UIButton 获取它,则可以使用其 imageView 的可访问性标识符 来规避此问题。此方法应该可用于任何子类化 UIView 的类。
NSString *filename = [button.imageView accessibilityIdentifier] ;
关于iphone - iOS:XIB 中使用的图像名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14447189/