![](https://products-qa.fileformat.com/he/image/swift/kingfisher/header-image.png)
Kingfisher
ספריית Swift בחינם להורדה ושמירה במטמון של תמונות
קוד פתוח של Swift API המאפשר למפתחי תוכנה לעבוד עם תמונות מרוחקות בתוך אפליקציות האינטרנט שלהם. זה מאפשר להוריד ולשמור תמונות במטמון, להחיל מעבדי תמונות ומסננים.
Kingfisher הוא מימוש Swift טהור קל משקל שסיפק פונקציונליות מלאה לעבודה עם מספר פורמטים של קבצי תמונה באמצעות קוד Swift. הספרייה עוזרת למפתחים ליצור יישומים שיכולים לטפל מרחוק בתמונות בקלות. הספרייה מורידה באופן אסינכרוני ושומרת תמונות בתוך האפליקציות שלהן. הספרייה תומכת במטמון מרובה שכבות עבור התמונות שהורדת, שמשפר מאוד את ביצועי האפליקציות. זה אומר שתמונות יישמרו במטמון בזיכרון וגם בדיסק כך שאין צורך להוריד אותן שוב.
הספרייה קלה מאוד לטיפול ומספקת מתקן לניהול מטמון. משתמשים יכולים להגדיר בקלות את הגודל כמו גם את משך המטמון. זה גם יספק מתקן לניקוי מטמון אוטומטי שעוזר למשתמשים למנוע מהספרייה לנצל יותר מדי משאבים. תכונה נהדרת נוספת כלולה לביטול משימות. משתמשים יכולים לבטל בקלות את תהליך ההורדה או אחזור התמונות אם אין בו צורך יותר.
ספריית Kingfisher מאפשרת למפתחים להשתמש ברכיבי הורדת תמונות ואחסון תמונות בנפרד בהתאם לצרכיהם. אתה יכול אפילו ליצור מטמון משלך בהתאם לצרכים שלך באמצעות קוד Swift. זה משפר את ביצועי מטמון הדיסק על ידי הימנעות מפעולות דיסק מיותרות. הספרייה היא קוד פתוח וזמינה תחת רישיון MIT.
תחילת העבודה עם Kingfisher
שכפל את המקורות העדכניים ביותר באמצעות הפקודה הבאה
התקן את Kingfisher דרך GitHub.
$ git submodule add https://github.com/onevcat/Kingfisher.git
תמונות מטמון באמצעות ספריית סוויפט
זוהי משימה קשה מאוד להוריד באופן מתכנת תמונה ולאחסן אותה במטמון באמצעות URL. ספריית הקוד הפתוח קינגפישר עושה את זה קל עבור מפתחי תוכנה כדי להוריד ביעילות ולשמור תמונות בתוך היישומים שלהם. הספרייה תומכת בציפוי תמונות הן בזיכרון והן בדיסק. כברירת מחדל, כמות AM שישמש אינה מוגבלת אפילו והמשתמשים יכולים להגדיר את הערך בעצמם.
תמונות מטמון באמצעות ספריית סוויפט
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])
תמונות מתוך Apps Swift
ספריית קינגפישר מאפשרת למתכנתים תוכנה לכלול יכולת צפייה בתמונות בתוך היישום שלהם בקלות. הדרך הקלה ביותר עבור הגדרת תצוגת תמונה היא באמצעות תוסף UIImageView. הספרייה תוריד את התמונה מ-URL ותוביל אותה למאגרי זיכרון ולמטמון דיסק, ותציג אותה ב-imageView. כאשר משתמשים אחרונים להתקשר URL, זה מיד לאחזר ולהציג את התמונה מטמון. הוא גם תומך במספר פונקציות הקשורות לתמונות כגון דהייה הורדה תמונה, מראה בעל מיקום, תמונה בפינה עגולה וכן הלאה.
תמונות בתוך Apps Swift
import Kingfisher
let url = URL(string: "https://example.com/image.png")
imageView.kf.setImage(with: url)
אחסון ידני או הסרת תמונות מטמון
ספריית הקוד הפתוח קינגפישר מאפשרת למתכנתים לאחסן תמונות בקלות. כברירת מחדל, ניתן להשתמש בשיטות הרחבה כדי לאחסן את התמונה שנשלפה באופן אוטומטי. אבל אתה יכול לעשות את זה ידנית עם שיטת cache.store. ניתן גם להעביר את הנתונים המקוריים של התמונה אשר מסייעים לספרייה לקבוע באיזה פורמט התמונה צריכה להיות מאוחסנת. זה גם מספק תמיכה להסרת תמונה מסוימת באופן ידני מן המטמון. הוא גם תומך בניקוי כל נתוני המטמון, דיווח על גודל אחסון דיסק ויצירת מטמון משלך.
תמונות בתוך Apps 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)
}
}