3

有没有办法找出在 XIB 中使用的图像代号,例如按钮的背景?

假设我有带有按钮的xib,其属性背景(对于状态配置:默认)设置为“button.png”,按钮有一个IBOutlet,例如myButton。当我的视图是从 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"];

但不起作用(从笔尖初始化时如何使用 NSCoder?)

也试图覆盖

-(void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state{
    [super setBackgroundImage:image forState:state];
}

但是永远不会被调用,但是在 awakeFromNib 中,everyting 已经被初始化并加载了。

任何人都可以解释/帮助吗?

4

1 回答 1

1

是的,一旦是 UIImage,就不会保留原始文件名的引用。

但是,如果您需要从 UIButton 获得它,则可以通过使用其 imageView 的可访问性标识符来规避该问题。这个方法应该在任何继承 UIView 的类上都可用。

NSString *filename = [button.imageView accessibilityIdentifier] ;
于 2013-01-22T15:11:28.110 回答