为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

iOS
拉风的咖菲猫 2019-10-11 15:00:11
是否可以读取UIImageView's UIImage 当前存储在中的的名称UIImageView?我希望您可以做这样的事情,但还没有弄清楚。NSString *currentImageName = [MyIImageView getFileName];
查看完整描述

3 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

不。你不能那样做。


原因是UIImageView实例不存储图像文件。它存储一个显示UIImage实例。从文件制作图像时,您将执行以下操作:


UIImage *picture = [UIImage imageNamed:@"myFile.png"];

完成此操作后,将不再引用文件名。该UIImage实例包含的数据,无论它得到了它。因此,UIImageView可能无法知道文件名。


另外,即使可以,也永远不会从视图中获取文件名信息。这打破了MVC。


查看完整回答
反对 回复 2019-10-11
?
GCT1015

TA贡献1827条经验 获得超4个赞

您可以将setAccessibilityIdentifier方法用于UIView的任何子类


UIImageView *image ;

[image setAccessibilityIdentifier:@"file name"] ;


NSString *file_name = [image accessibilityIdentifier] ;


查看完整回答
反对 回复 2019-10-11
?
精慕HU

TA贡献1845条经验 获得超8个赞

不,不,不……一般而言,这些事情都是可能的。这只会让您感觉自己像个肮脏的人。如果绝对必要,请执行以下操作:


使用您自己的实现创建一个类,该类+imageNamed:(NSString*)imageName将调用现有实现,并使用此处标识的技术(如何在对象内部使用objc_setAssociatedObject / objc_getAssociatedObject?)imageName与返回的UIImage对象永久关联。


使用Method SwizzlingimageNamed:在Objective-C运行时的方法查找表中交换为您的实现提供的实现。


随时可以访问与UIImage实例关联的名称(使用objc_getAssociatedObject)。


我可以验证这一点是否可行,但需要注意的是,您无法获取NIB中加载的UIImage的名称。从NIB加载的图像似乎不是通过任何标准函数调用创建的,所以对我来说确实是个谜。


我将实施留给您。与Objective-C运行时绑定的复制粘贴代码是一个非常糟糕的主意,因此请仔细考虑项目的需求,并仅在必要时实施。


查看完整回答
反对 回复 2019-10-11
  • 3 回答
  • 0 关注
  • 828 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信