UIImageView-如何获取分配的图像的文件名?

是否可以读取UIImageView's UIImage 当前存储在中的的名称UIImageView?


我希望您可以做这样的事情,但还没有弄清楚。


NSString *currentImageName = [MyIImageView getFileName];


拉风的咖菲猫
浏览 829回答 3
3回答

九州编程

不。你不能那样做。原因是UIImageView实例不存储图像文件。它存储一个显示UIImage实例。从文件制作图像时,您将执行以下操作:UIImage *picture = [UIImage imageNamed:@"myFile.png"];完成此操作后,将不再引用文件名。该UIImage实例包含的数据,无论它得到了它。因此,UIImageView可能无法知道文件名。另外,即使可以,也永远不会从视图中获取文件名信息。这打破了MVC。

GCT1015

您可以将setAccessibilityIdentifier方法用于UIView的任何子类UIImageView *image ;[image setAccessibilityIdentifier:@"file name"] ;NSString *file_name = [image accessibilityIdentifier] ;

精慕HU

不,不,不……一般而言,这些事情都是可能的。这只会让您感觉自己像个肮脏的人。如果绝对必要,请执行以下操作:使用您自己的实现创建一个类,该类+imageNamed:(NSString*)imageName将调用现有实现,并使用此处标识的技术(如何在对象内部使用objc_setAssociatedObject / objc_getAssociatedObject?)imageName与返回的UIImage对象永久关联。使用Method SwizzlingimageNamed:在Objective-C运行时的方法查找表中交换为您的实现提供的实现。随时可以访问与UIImage实例关联的名称(使用objc_getAssociatedObject)。我可以验证这一点是否可行,但需要注意的是,您无法获取NIB中加载的UIImage的名称。从NIB加载的图像似乎不是通过任何标准函数调用创建的,所以对我来说确实是个谜。我将实施留给您。与Objective-C运行时绑定的复制粘贴代码是一个非常糟糕的主意,因此请仔细考虑项目的需求,并仅在必要时实施。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS