我知道标题是复杂的,但本质上是我试图做的
let gif = UIImage(gifName: (String(format: "%03d", self.animal.speciesId!)))
self.gifIBO.setGifImage(gif, manager: gifManager)
gifIBO.contentMode = UIViewContentMode.center
这是我的代码。我有一系列我正在从其中抓住的图像集合,使用格式"%03d" ex:(001,002,010)。但是我有1000多个图像,其中一些图像包含额外的字母。
ex:300-f.gif,231-m.gif
这些图像被跳过了。我当前的解决方案是重命名每个具有扩展字符的图像。当Swift发现填充某些要求的图像时,是否有任何本地方法可以删除这些扩展字符?
例如。如果它找到图像300-f.gif但前三个字符匹配,则需要删除字符串的其余部分并使用该图像而不是跳过它并返回
找不到300.gif
在控制台上。
您可以在捆绑中迭代所有gif,并寻找以 speciesId
开头的gif:
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)!
}
-
Bundle.main.urls(...)
列出了主捆绑包中的所有GIF文件 -
first
搜索名称与特定条件匹配的第一个文件。条件是基于您的speciesId
的正则模式。该模式将符合001(-.)?
之类的内容,这是说话的方式:"字符串001
,可选为dash(-
)和另一个字母(.
表示任何字母)" -
map
将路径变成了您的UIImage