Kingfisher
مكتبة Swift مجانية لتنزيل الصور وذاكرة التخزين المؤقت
مفتوحة المصدر Swift API التي تسمح لمطوري البرامج بالعمل مع الصور البعيدة داخل تطبيقات الويب الخاصة بهم. يسمح بتنزيل الصور وتخزينها مؤقتًا وتطبيق معالجات الصور والمرشحات.
Kingfisher هو تطبيق Swift خالص خفيف الوزن يوفر وظائف كاملة للعمل مع تنسيقات ملفات صور متعددة باستخدام رمز Swift. تساعد المكتبة المطورين على إنشاء تطبيقات يمكنها التعامل مع الصور عن بُعد بسهولة. تقوم المكتبة بتنزيل الصور بشكل غير متزامن وكذلك تخزينها مؤقتًا داخل تطبيقاتها الخاصة. تدعم المكتبة ذاكرة تخزين مؤقت متعددة الطبقات للصور التي تم تنزيلها والتي تعزز أداء التطبيقات بشكل كبير. هذا يعني أنه سيتم تخزين الصور مؤقتًا في الذاكرة وكذلك على القرص ، لذلك لا داعي لتنزيلها مرة أخرى.
من السهل جدًا التعامل مع المكتبة وتوفر وسيلة لإدارة ذاكرة التخزين المؤقت. يمكن للمستخدمين بسهولة تعيين حجم ذاكرة التخزين المؤقت وكذلك مدتها. سيوفر أيضًا وسيلة لتنظيف ذاكرة التخزين المؤقت تلقائيًا تساعد المستخدمين على منع المكتبة من استخدام الكثير من الموارد. يتم تضمين ميزة أخرى رائعة لإلغاء المهمة. يمكن للمستخدمين إلغاء عملية التنزيل أو استرجاع الصور بسهولة إذا لم تعد هناك حاجة إليها.
تسهل مكتبة Kingfisher للمطورين استخدام تنزيل الصور ومكونات التخزين المؤقت للصور بشكل منفصل وفقًا لاحتياجاتهم. يمكنك حتى إنشاء ذاكرة التخزين المؤقت الخاصة بك وفقًا لاحتياجاتك الخاصة باستخدام رمز Swift. يعمل على تحسين أداء ذاكرة التخزين المؤقت على القرص عن طريق تجنب عمليات القرص غير الضرورية. المكتبة مفتوحة المصدر ومتاحة بموجب ترخيص MIT.
الشروع في العمل مع Kingfisher
استنساخ أحدث المصادر باستخدام الأمر التالي
قم بتثبيت Kingfisher عبر GitHub.
$ git submodule add https://github.com/onevcat/Kingfisher.git
قم بتنزيل الصور وذاكرة التخزين المؤقت عبر Swift Library
إنها مهمة صعبة للغاية لتنزيل صورة برمجيًا وتخزينها في ذاكرة التخزين المؤقت باستخدام عنوان URL. مكتبة Swift مفتوحة المصدر Kingfisher تجعل من السهل على مطوري البرامج تنزيل الصور وتخزينها مؤقتًا داخل تطبيقاتهم الخاصة. تدعم المكتبة التخزين المؤقت للصور سواء في الذاكرة أو على القرص. بشكل افتراضي ، لا يتم تحديد مقدار ذاكرة الوصول العشوائي التي سيتم استخدامها حتى ويمكن للمستخدمين تعيين القيمة بأنفسهم.
قم بتنزيل الصور وذاكرة التخزين المؤقت عبر Swift Library
let urls = ["https://example.com/image1.jpg", "https://example.com/image2.jpg"]
.map { URL(string: $0)! }
let prefetcher = ImagePrefetcher(urls: urls) {
skippedResources, failedResources, completedResources in
print("These resources are prefetched: \(completedResources)")
}
prefetcher.start()
// Later when you need to display these images:
imageView.kf.setImage(with: urls[0])
anotherImageView.kf.setImage(with: urls[1])
عرض الصور داخل تطبيقات Swift
تسمح مكتبة Kingfisher لمبرمجي البرامج بتضمين إمكانية عرض الصور داخل تطبيقاتهم بسهولة. أسهل طريقة لإعداد عرض الصورة هي استخدام ملحق UIImageView. ستقوم المكتبة بتنزيل الصورة من URL وتوجيهها إلى كل من ذاكرة التخزين المؤقت وذاكرة التخزين المؤقت على القرص ، وعرضها في imageView. عندما يتصل المستخدمون الأخيرون بنفس عنوان URL ، فسوف يقوم على الفور باسترداد الصورة وعرضها من ذاكرة التخزين المؤقت. كما أنه يدعم العديد من الوظائف المتعلقة بالصور مثل صورة التنزيل الباهتة ، وإظهار العنصر النائب ، وصورة الزاوية المستديرة ، وما إلى ذلك.
عرض الصور داخل تطبيقات Swift
import Kingfisher
let url = URL(string: "https://example.com/image.png")
imageView.kf.setImage(with: url)
تخزين صور ذاكرة التخزين المؤقت أو إزالتها يدويًا
تتيح مكتبة Swift مفتوحة المصدر التي يوفرها Kingfisher للمبرمجين إمكانية تخزين الصور وإزالتها من ذاكرة التخزين المؤقت بسهولة. بشكل افتراضي ، يمكن استخدام طرق عرض الامتداد لتخزين الصورة المستردة في ذاكرة التخزين المؤقت تلقائيًا. ولكن يمكنك القيام بذلك يدويًا باستخدام طريقة cache.store (). يمكنك أيضًا تمرير البيانات الأصلية للصورة والتي تساعد المكتبة على تحديد التنسيق الذي يجب تخزين الصورة به. كما يوفر دعمًا لإزالة صورة معينة يدويًا من ذاكرة التخزين المؤقت. كما أنه يدعم مسح جميع بيانات ذاكرة التخزين المؤقت ، والإبلاغ عن حجم تخزين القرص وإنشاء ذاكرة التخزين المؤقت الخاصة بك.
عرض الصور داخل تطبيقات Swift
//Check whether an image in the cache
let cache = ImageCache.default
let cached = cache.isCached(forKey: cacheKey)
// To know where the cached image is:
let cacheType = cache.imageCachedType(forKey: cacheKey)
// `.memory`, `.disk` or `.none`.
// Store Image in the cache
let processor = RoundCornerImageProcessor(cornerRadius: 20)
imageView.kf.setImage(with: url, options: [.processor(processor)])
// Later
cache.isCached(forKey: cacheKey, processorIdentifier: processor.identifier)
// Retrieve image from cache
cache.retrieveImage(forKey: "cacheKey") { result in
switch result {
case .success(let value):
print(value.cacheType)
// If the `cacheType is `.none`, `image` will be `nil`.
print(value.image)
case .failure(let error):
print(error)
}
}