我希望在运行时获取这两个值。
想象一下,由于某些原因,无法在代码中的任何位置设置此名称。只在IB。但我可以在我的代码中拥有一系列所有可能的图像名称。
let images = ["black_76", "black_152", ...and so on]
有意图然后能够做到:
if images.contains(nameOfImageInIB) {
//do stuff
}
acessibilityIdentifier
是人们提出的一个好主意,但由于imageView或按钮可以有多个图像与之关联,但只有一个acessibilityIdentifier,它不起作用。
最终目标是只能使用IB属性以某种方式在代码中提供我的图像名称。将标记设置为数组中名称的索引可能会有效,但同样,我只能有一个标记,但需要查找两个图像。
此外,尽量避免将IBDesignable添加到我的代码中,只使用IB中默认提供的内容。
答案 0 :(得分:0)
UIImage在运行时没有引用图像的名称。有一些方法可以使用UIImageView的可访问性标签:https://stackoverflow.com/a/16825088/1852164
答案 1 :(得分:0)
我害怕这是不可能的。查看this answer以查看有关原因的详细信息。
在运行时无需获取此文件名的情况下,可能还有另一种方法可以执行任何操作,但我不确定没有关于您的情况的更多详细信息。如果您正在尝试查看当前存储在UIImageView中的图像,则必须在UIViewController中维护一个变量,该变量指示上次加载的图像并进行检查。或者,例如,如果您希望能够识别已经点击的图像,则可以改为比较图像的数组索引而不是文件名。在viewDidLoad()中,您可以使用阵列中已有的文件名以编程方式生成图像。
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以考虑设置图像.tag选项,但这是否成功取决于用户如何选择图像......