我知道标题很复杂但基本上我试图这样做
let gif = UIImage(gifName: (String(format: "%03d", self.animal.speciesId!)))
self.gifIBO.setGifImage(gif, manager: gifManager)
gifIBO.contentMode = UIViewContentMode.center
这是我的代码。我收集的图像集合使用格式"%03d"例如:(001,002,010)。但是我有超过1000张图像,其中一些图像包含额外的字母。
例如:300-f.gif,231-m.gif
跳过这些图片。我目前的解决方案是重命名每个具有扩展字符的图像。当swift发现满足某些要求的图像时,是否有任何本机方式可以让swift删除这些扩展字符?
例如。如果找到图像300-f.gif但前三个字符匹配,则需要删除字符串的其余部分并使用该图像而不是跳过它并返回
找不到300.gif
在控制台上。
答案 0 :(得分:0)
您可以迭代捆绑包中的所有GIF,并查找以char
开头的那个:
speciesId
let gif = Bundle.main.urls(forResourcesWithExtension: "gif", subdirectory: nil)!
.first {
let pattern = String(format: "%03d(-.)?", speciesId)
return $0.lastPathComponent.range(of: pattern, options: [.regularExpression]) != nil
}.map {
UIImage(contentsOfFile: $0.path)!
}
列出主套装中的所有gif文件Bundle.main.urls(...)
搜索名称与特定条件匹配的第一个文件。条件是基于first
的正则表达式模式。该模式可以解决类似speciesId
这样的正则表达方式:"字符串001(-.)?
,可选地后跟短划线(001
)和另一个字母({ {1}}表示任何字母)" -
将路径转换为.
为您