iphone - iOS:XIB 中使用的图像名称

标签 iphone ios objective-c xib nscoder

有什么方法可以找出 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/

相关文章:

iphone - Facebook iOS SDK 3.5 模态提要对话框在 iPhone 中加载为空

ios - 我可以将两个按钮分配给 Xcode 7 中的同一个 Action 或 socket 吗?

iphone - uitableview 每行显示 3 个对象

ios - 有没有办法遍历字典?

iphone - Twitter Bootstrap 子导航关闭而不是激活 iPhone 上的链接

ios - Xamarin 应用程序在设备上启动时崩溃,在模拟器中运行良好

ios - 使用 UIActivityViewController 在非官方 Twitter 客户端上共享内容?

ios - iPhone 6 plus 尺寸显示为 375.0 x 667.0?

ios - iOS 8 SDK 中的 GL_DRAW_FRAMEBUFFER_APPLE 和 GL_READ_FRAMEBUFFER_APPLE 在哪里?

iphone - UIMenuController 未显示