17

我正在使用 UIImage,其中有一个图像,我想知道图像的名称。

4

5 回答 5

10

该功能不是内置的,UIImage因为图像并不总是从文件中加载。但是,您可以创建一个自定义UIImageView子类来满足您的需求。

于 2012-04-23T11:09:50.183 回答
5

这不可能。UIImage 实例包含实际的图像数据,没有对文件名的任何引用。

于 2012-04-23T11:10:03.190 回答
1

图像不一定来自文件或其他命名来源,因此并非所有图像都有名称。从文件创建图像时,您可以将名称存储在单独的NSString*中,然后在必要时引用该存储的名称。

于 2012-04-23T11:09:30.053 回答
0

此代码将帮助您

    NSString *imgName = [self.imgView1st image].accessibilityIdentifier;

    NSLog(@"%@",imgName);

    [self.imgView2nd setImage:[UIImage imageNamed:imgName]];
于 2013-05-29T22:38:47.547 回答
-1

在以后的 iOS 版本中,可以从描述中提取图像名称。请注意,仅供调试使用!

extension UIImage {

    /// Extracts image name from a description.
    /// * Example description: `<UIImage:0x60000278ce10 named(main: ic_timeline_milestone_bluedot) {16, 16}>`
    /// * Example name: `ic_timeline_milestone_bluedot`
    /// - warning: For the debug use only.
    var name: String? {
        let description = self.description
        guard let regexp = try? NSRegularExpression(pattern: "\\(main: (.*)\\)", options: []) else { return nil }
        guard let match = regexp.matches(in: description, options: [], range: description.fullRange).first else { return nil }
        guard match.numberOfRanges > 0 else { return nil }
        let idx1 = description.index(description.startIndex, offsetBy: range.lowerBound)
        let idx2 = description.index(description.startIndex, offsetBy: range.upperBound)
        return String(description[idx1..<idx2])
    }
}
于 2020-06-22T10:00:22.123 回答