Эта библиотека предоставляет асинхронный загрузчик изображений с поддержкой кеша. Для удобства мы добавили категории для элементов пользовательского интерфейса, таких как UIImageView , UIButton , MKAnnotationView .
Примечание:
SDявляется префиксом для простого дизайна (это название команды в Daily Motion Company от автора Оливье Путре))
UIImageView , UIButton , MKAnnotationView Добавление веб -изображений и управления кэшем От 5,19+ Sdwebimage поддерживает Visionos во всех менеджерах пакетов (включают в себя Cocoapods/Carthage/SPM). Обновите соответствующие инструменты, если вы сталкиваетесь с проблемами.
Для 5.18+ Sdwebimage может быть составлен для платформы Visionos. Тем не менее, он все еще находится в бета -версии и может содержит проблемы, в отличие от стабильной поддержки ios uikit. Добро пожаловать, чтобы попробовать и сообщить о проблеме.
Чтобы опираться на Visionos, в настоящее время мы поддерживаем только стандартную интеграцию Xcode.
См. Installation with Swift Package Manager и Manual Installation Guide ниже.
Примечание: для нового пользователя
SDWEBIMAGE Используйте систему плагина кодировщика для поддержки как встроенного, так и внешнего формата изображения Apple. Для статического изображения мы всегда используем встроенный Apple в качестве запасного, но не для анимированного изображения. В настоящее время (обновлена до версии 5.19.x) мы регистрируем только традиционный анимированный формат, такой как GIF/APNG по умолчанию, без современного формата, такого как AWEBP/HEICS/AVIF, даже на последней прошивке.
Если вам нужна эта анимированная поддержка формата изображений, просто зарегистрируйтесь сами с помощью однострочного кода, посмотрите больше в Webp Coder и Heic Coder
В будущем мы изменим это поведение, всегда регистрируя весь встроенный анимационный формат Apple, чтобы облегчить интеграцию нового пользователя.
Чтобы сохранить сфокусированный и ограниченный SDWEBIMAGE и ограничивать основные функции, но также позволяет расширять и пользовательское поведение, во время рефакторинга 5.0 мы сосредоточились на модулизации библиотеки. Таким образом, мы перенесли/построили новые модули в Sdwebimage Org.
Swiftui - это инновационная структура пользовательского интерфейса, написанная в Swift для создания пользовательских интерфейсов на всех платформах Apple.
Мы поддерживаем Swiftui, создав совершенно новую структуру под названием SdwebimagesWiftui, которая строится на вершине основных функций SdWebimage (кэширование, загрузка и анимация).
Новая структура вводит два вида Structs WebImage и AnimatedImage для Swiftui World, модификатор ImageIndicator для любого представления, наблюдаемый объект ImageManager для источника данных. Поддерживает iOS 13+/macOS 10.15+/TVOS 13+/watchOS 6+ и Swift 5.1. Приятно попробовать и дать обратную связь!
Photos.framework )LPLinkView (с помощью LinkPresentation.framework ) Вы можете использовать их напрямую или создавать собственные сходные компоненты, используя настраиваемую архитектуру Sdwebimage.
pod try SDWebImage# import < SDWebImage/SDWebImage.h >
...
[imageView sd_setImageWithURL: [ NSURL URLWithString: @" http://www.domain.com/path/to/image.jpg " ]
placeholderImage: [UIImage imageNamed: @" placeholder.png " ]];import SDWebImage
imageView . sd_setImage ( with : URL ( string : " http://www.domain.com/path/to/image.jpg " ) , placeholderImage : UIImage ( named : " placeholder.png " ) )В 5.0 мы представили совершенно новый механизм для поддержки анимированных изображений. Это включает в себя анимированную загрузку изображений, рендеринг, декодирование, а также поддерживает настройки (для продвинутых пользователей).
Это решение для анимационного изображения доступно для iOS / tvOS / macOS . SDAnimatedImage является подклассом UIImage/NSImage , а SDAnimatedImageView является подклассом UIImageView/NSImageView , чтобы сделать их совместимыми с API -интерфейсами Common Frameworks.
SDAnimatedImageView поддерживает знакомые методы загрузки изображения, работающие как замена выпадения для UIImageView/NSImageView .
У вас нет UIView (например, WatchKit или CALayer )? Вы по -прежнему можете использовать SDAnimatedPlayer двигатель Player для расширенного воспроизведения и рендеринга.
Смотрите анимированное изображение для более подробной информации.
SDAnimatedImageView *imageView = [SDAnimatedImageView new ];
SDAnimatedImage *animatedImage = [SDAnimatedImage imageNamed: @" image.gif " ];
imageView.image = animatedImage; let imageView = SDAnimatedImageView ( )
let animatedImage = SDAnimatedImage ( named : " image.gif " )
imageView . image = animatedImage Чтобы очистить вещи и заставить наш основной проект делать меньше вещей, мы решили, что интеграция FLAnimatedImage здесь не принадлежит. Из 5.0 это все еще будет доступно, но под выделенным репо Sdwebimageflplugin.
В вашем проекте есть 5 способов использовать sdwebimage:
Cocoapods является менеджером зависимостей для Objective-C, который автоматизирует и упрощает процесс использования 3-й личной библиотеки в ваших проектах. Смотрите раздел «Начало работы» для получения более подробной информации.
platform :ios, '8.0'
pod 'SDWebImage', '~> 5.0'
Swift Project ранее должен был использовать use_frameworks! Чтобы сделать все стручки в динамическую структуру, чтобы позволить кокоаподам работать.
Тем не менее, начиная с CocoaPods 1.5.0+ (с Xcode 9+ ), который поддерживает для создания обоих объектов C && Swift Code в статическую структуру. Вы можете использовать модульные заголовки для использования sdwebimage в качестве статической структуры, без необходимости use_frameworks! :
platform :ios, '8.0'
# Uncomment the next line when you want all Pods as static framework
# use_modular_headers!
pod 'SDWebImage', :modular_headers => true
Смотрите больше на кокоподах 1.5.0 - Swift Static Libraries
Если нет, вам все равно нужно добавить use_frameworks! Чтобы использовать Sdwebimage в качестве динамической структуры:
platform :ios, '8.0'
use_frameworks!
pod 'SDWebImage'
Сейчас доступно 2 подпроката: Core и MapKit (это означает, что вы можете установить только некоторые модули Sdwebimage. По умолчанию вы получаете только Core , поэтому, если вам нужен MapKit , вам нужно указать его).
Пример Podfile:
pod 'SDWebImage/MapKit'
Карфаген является легким менеджером зависимостей для Swift и Objective-C. Он использует модули кокоатуч и менее инвазивна, чем кокопод.
Чтобы установить с Карфагеном, следуйте инструкциям на Карфагене
Пользователи Carthage могут указать на этот репозиторий и использовать какую -либо сгенерированную структуру, которую они хотели бы: sdwebimage, sdwebimagemapkit или обоих.
Сделайте следующую запись в своем Cartfile: github "SDWebImage/SDWebImage" , затем запустите carthage update если это ваш первый раз, используя Carthage в проекте, вам нужно будет пройти некоторые дополнительные шаги, как объяснено в Carthage.
Примечание. В настоящее время Карфаген не предоставляет способ построить только конкретные подкомпоненты хранилища (или эквивалентно подвичкам Cocoapods). Все компоненты и их зависимости будут построены с вышеуказанной командой. Тем не менее, вам не нужно копировать фреймворки, которые вы не используете в свой проект. Например, если вы не используете
SDWebImageMapKit, не стесняйтесь удалить эту структуру из каталога сборки Карфагена после завершенияcarthage update.
Примечание: Apple требует Sdwebimage содержит подписи. Таким образом, по умолчанию бинарная структура
carthage buildне выполняет CodeSign, это приведет к ошибке проверки. Вы можете подписать себя с идентификацией программы Apple Developer или используя бинарную структуру:
binary "https://github.com/SDWebImage/SDWebImage/raw/master/SDWebImage.json"
Swift Package Manager (SWIFTPM)-это инструмент для управления распределением Swift Code, а также зависимости от C-семьи. Из Xcode 11 Swiftpm был изначально интегрирован с Xcode.
Sdwebimage Поддержка Swiftpm из версии 5.1.0. Чтобы использовать SWIFTPM, вы должны использовать XCODE 11, чтобы открыть свой проект. Нажмите File -> Swift Packages -> Add Package Dependency , введите URL -адрес sdwebimage Repo. Или вы можете войти в систему xcode с учетной записью Github и просто ввести SDWebImage для поиска.
После выбора пакета вы можете выбрать тип зависимости (Tagged Version, Branch или Commit). Затем Xcode настраивает все вещи для вас.
Если вы являетесь автором фреймворта и используете sdwebimage в качестве зависимости, обновите свой Package.swift Swift File:
let package = Package (
// 5.1.0 ..< 6.0.0
dependencies : [
. package ( url : " https://github.com/SDWebImage/SDWebImage.git " , from : " 5.1.0 " )
] ,
// ...
)От 5.19.2 Sdwebimage предоставляет каноническую официальную бинарную XCFramework на страницах выпуска GitHub.
Вы можете загрузить SDWebImage-dynamic.xcframework.zip для динамического связанного или SDWebImage-static.xcframework.zip для статической связи.
Перетащите незамеченную .xcframework на вкладку вашего проекта Xcode.
Из Xcode 15 Apple проверит подпись бинарной XCFramework, чтобы избежать атаки цепочки поставок.
Отпечаток пальца в настоящее время должен быть FC 3B 10 13 86 34 4C 50 DB 70 2A 9A D1 01 6F B5 1A 3E CC 8B 9D A9 B7 AE 47 A0 48 D4 D0 63 39 83
Сертификат хранится в репо здесь
Общественный ключ хранится в репо здесь
Смотрите больше: Проверка происхождения вашего XCFrameWorks
sudo xcode-select -s /path/to/Xcode.app
или
export DEVELOPER_DIR=/path/to/Xcode.app/Contents/Developer
./Scripts/build-frameworks.sh
./Scripts/create-xcframework.sh
// https://developer.apple.com/support/third-party-SDK-requirements/
codesign --timestamp -v --sign "your own certificate" SDWebImage.xcframework
Смотрите больше на Wiki: Руководство по установке ручной установки
В исходных файлах, где вам нужно использовать библиотеку, импортируйте файл заголовка зонтика:
# import < SDWebImage/SDWebImage.h > Он также рекомендуется использовать синтаксис импорта модуля, доступный для кокопод (включение modular_headers )/carthage/swiftpm.
@import SDWebImage;
На этом этапе ваше рабочее пространство должно построить без ошибок. Если у вас проблемы, отправьте эту проблему, и сообщество может помочь вам решить ее.
Из XCode 15 мы предоставляем новый файл PrivacyInfo.xcprivacy для сведений о конфиденциальности, см. Описание использования данных в манифестах конфиденциальности.
Вы можете экспортировать отчет о конфиденциальности после архива вашего приложения, интегрируя Sdwebimage через Swiftpm/XCFrameWork или CocoApods ( use_frameworks устанавливается на True).
Для старой версии или, если вы используете Ar Archive Static AR, как того требуют подробности конфиденциальности приложений в магазине приложений, вот список практик сбора данных SdWebimage.
Спасибо всем людям, которые уже внесли свой вклад в Sdwebimage.
Весь исходный код лицензирован по лицензии MIT.
Чтобы узнать о дизайне архитектуры Sdwebimage для вклада, прочитайте ядро архитектуры Sdwebimage v5.6. Спасибо @looseyi за пост и перевод.