Вот как я это делаю.
Прежде всего , вот как вы можете создать Пакет для хранения ваших активов как изображений.
Первый , создайте новую цель: перейдите в главное меню Xcode, File => New => Target. Выберите «вкладку macOS», затем из «Framework & Library» выберите «Bundle».
Дайте ему желаемое имя и нажмите Fini sh. Вы должны увидеть пакет в папке вашего проекта.
Секунда , Конфигурация меняет настройки сборки Bundle: Go для Настройки сборки на целевом комплекте и измените Базовый SDK на iOS.
Третий , Добавление изображений: добавляйте свои изображения непосредственно в Bundle, не нужно добавлять папку ресурсов. Просто перетащите.
Четвертый , создайте комплект: выберите свой комплект в качестве пункта назначения, выберите универсальное устройство c iOS и нажмите Command + B
Пятое , .bundle появится в папке ваших продуктов в папке вашего проекта. Щелкните правой кнопкой мыши на нем и просмотрите его в Finder, а затем перетащите его внутрь основной папки проекта.
Наконец , вот как я могу получить доступ к ресурсам внутри вашего пакета.
// Empty UIImage array to store the images in it.
var images = [UIImage]()
let fileManager = FileManager.default
let bundleURL = Bundle.main.bundleURL
let assetURL = bundleURL.appendingPathComponent("MyBundle.bundle") // Bundle URL
do {
let contents = try fileManager.contentsOfDirectory(at: assetURL,
includingPropertiesForKeys: [URLResourceKey.nameKey, URLResourceKey.isDirectoryKey],
options: .skipsHiddenFiles)
for item in contents { // item is the URL of everything in MyBundle imgs or otherwise.
let image = UIImage(contentsOfFile: item.path) // Initializing an image
images.append(image!) // Adding the image to the icons array
}
}
catch let error as NSError {
print(error)
}
Таким образом, у вас будет файл .plist внутри вашего пакета, поэтому Я предлагаю вам справиться с этим с помощью простого условия, чтобы проверить, является ли имя файла Info.plist
, не создавайте из него изображение.
Вот как я обработал его очень тривиальным способом.
let fileManager = FileManager.default
let bundleURL = Bundle.main.bundleURL
let assetURL = bundleURL.appendingPathComponent("Glyphs.bundle")
do {
let contents = try fileManager.contentsOfDirectory(at: assetURL, includingPropertiesForKeys: [URLResourceKey.nameKey, URLResourceKey.isDirectoryKey], options: .skipsHiddenFiles)
for item in contents {
let imageName = item.lastPathComponent
if imageName != "Info.plist" {
let image = UIImage(contentsOfFile: item.path)
icons.append(image!)
}
}
}
catch {
//print(error)
showAlert(withTitle: "Error", message: "Can't get the icons.")
}