有没有办法找出图像的代码名称在XIB中用于例如按钮的背景?
假设我有带按钮的xib,其属性Background(对于State Config:Default)设置为“button.png”,按钮有一个IBOutlet,例如myButton。当我的视图是从xib创建的时候我可以通过以下方式轻松访问图像:[myButton backgroundImageForState:UIControlStateNormal]但它当然是UIImage,但我需要找到xib中使用的图像名称(“button.png”)。
我试图将UIButton子类化并在initWithCoder中找到NSCoder:(NSCoder *)aDecoder但没有结果
定义按钮背景的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中,每个都已经初始化并加载了。
有人可以解释/帮助吗?
答案 0 :(得分:1)
是的,一旦是UIImage,就不会保留原始文件名的引用。
但是如果您需要来自UIButton,可以使用其imageView的辅助功能标识符来规避问题。这个方法应该可以在任何子类UIView上使用。
NSString *filename = [button.imageView accessibilityIdentifier] ;