ไลบรารีนี้มีตัวดาวน์โหลดรูปภาพ async พร้อมการสนับสนุนแคช เพื่อความสะดวกเราได้เพิ่มหมวดหมู่สำหรับองค์ประกอบ UI เช่น UIImageView , UIButton , MKAnnotationView
หมายเหตุ:
SDเป็นคำนำหน้าสำหรับ การออกแบบที่เรียบง่าย (ซึ่งเป็นชื่อทีมใน Daily Motion Company จากผู้แต่ง Olivier Poitrey)
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 ใช้ระบบปลั๊กอิน Coder เพื่อรองรับทั้งรูปแบบภาพในตัวและภายนอกของ Apple สำหรับภาพคงที่เรามักจะใช้ในตัวของ Apple เป็นทางเลือก แต่ไม่ใช่สำหรับภาพเคลื่อนไหว ปัจจุบัน (อัปเดตเป็นรุ่น 5.19.x) เราลงทะเบียนรูปแบบภาพเคลื่อนไหวแบบดั้งเดิมเช่น GIF/APNG โดยค่าเริ่มต้นโดยไม่มีรูปแบบที่ทันสมัยเช่น AWEBP/HEICS/AVIF แม้ในเฟิร์มแวร์ล่าสุด
หากคุณต้องการการสนับสนุนรูปแบบภาพเคลื่อนไหวเหล่านี้เพียงลงทะเบียนด้วยตัวเองด้วยรหัสบรรทัดเดียวดูเพิ่มเติมใน Webp Coder และ Heic Coder
ในอนาคตเราจะเปลี่ยนพฤติกรรมนี้โดยการลงทะเบียนรูปแบบภาพเคลื่อนไหวในตัวของ Apple ทั้งหมดเสมอเพื่อให้ผู้ใช้ใหม่สามารถรวมเข้าด้วยกันได้ง่าย
เพื่อให้ Sdwebimage มุ่งเน้นและ จำกัด อยู่ที่คุณสมบัติหลัก แต่ยังอนุญาตให้มีการขยายและพฤติกรรมที่กำหนดเองในระหว่างการปรับแต่ง 5.0 เรามุ่งเน้นไปที่การปรับห้องสมุด ดังนั้นเราจึงย้าย/สร้างโมดูลใหม่ไปยัง Sdwebimage org
Swiftui เป็นกรอบ UI ที่เป็นนวัตกรรมที่เขียนด้วย Swift เพื่อสร้างส่วนต่อประสานผู้ใช้ในแพลตฟอร์ม Apple ทั้งหมด
เราสนับสนุน Swiftui โดยการสร้างกรอบใหม่เอี่ยมที่เรียกว่า SdwebimagesWiftui ซึ่งสร้างขึ้นบนฟังก์ชั่นหลักของ SDWebimage (แคชการโหลดและแอนิเมชั่น)
เฟรมเวิร์กใหม่แนะนำสองมุมมอง structs WebImage และ AnimatedImage สำหรับ World Swiftui, ImageIndicator modifier สำหรับมุมมองใด ๆ วัตถุที่สังเกตได้ของ 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 เพื่อให้เข้ากันได้กับ APIs ทั่วไป
SDAnimatedImageView รองรับวิธีการโหลดภาพที่คุ้นเคยซึ่งใช้งานได้เช่นการแทนที่แบบดรอปอินสำหรับ UIImageView/NSImageView
ไม่มี UIView (เช่น WatchKit หรือ CALayer )? คุณยังสามารถใช้ SDAnimatedPlayer เครื่องยนต์ผู้เล่นสำหรับการเล่นและการแสดงผลขั้นสูง
ดูภาพเคลื่อนไหวสำหรับข้อมูลรายละเอียดเพิ่มเติม
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 สิ่งนี้จะยังคงมีอยู่ แต่ภายใต้ repo sdwebimageflplugin โดยเฉพาะ
มี 5 วิธีในการใช้ sdwebimage ในโครงการของคุณ:
Cocoapods เป็นตัวจัดการการพึ่งพาสำหรับ Objective-C ซึ่งจะทำให้กระบวนการใช้ห้องสมุดที่สามในโครงการของคุณง่ายขึ้น ดูส่วนเริ่มต้นสำหรับรายละเอียดเพิ่มเติม
platform :ios, '8.0'
pod 'SDWebImage', '~> 5.0'
โครงการ Swift ก่อนหน้านี้ต้องใช้ use_frameworks! เพื่อให้พ็อดทั้งหมดเป็นเฟรมเวิร์กแบบไดนามิกเพื่อให้ Cocoapods ทำงาน
อย่างไรก็ตามเริ่มต้นด้วย CocoaPods 1.5.0+ (ด้วย Xcode 9+ ) ซึ่งรองรับการสร้างทั้ง Objective-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
ดูเพิ่มเติมเกี่ยวกับ Cocoapods 1.5.0 - ห้องสมุดคงที่ Swift
ถ้าไม่คุณยังต้องเพิ่ม use_frameworks! เพื่อใช้ SDWebImage เป็นเฟรมเวิร์กแบบไดนามิก:
platform :ios, '8.0'
use_frameworks!
pod 'SDWebImage'
ตอนนี้มี 2 subspecs: Core และ MapKit (ซึ่งหมายความว่าคุณสามารถติดตั้งโมดูล SDWebimage ได้เฉพาะบางส่วนโดยค่าเริ่มต้นคุณจะได้รับ Core เท่านั้นดังนั้นหากคุณต้องการ MapKit คุณต้องระบุ)
ตัวอย่าง podfile:
pod 'SDWebImage/MapKit'
คาร์เธจเป็นตัวจัดการการพึ่งพาน้ำหนักเบาสำหรับ Swift และ Objective-C มันใช้ประโยชน์จากโมดูล cocoatouch และมีการรุกรานน้อยกว่า cocoapods
หากต้องการติดตั้งด้วย Carthage ให้ทำตามคำแนะนำเกี่ยวกับ Carthage
ผู้ใช้ Carthage สามารถชี้ไปที่ที่เก็บนี้และใช้เฟรมเวิร์กที่สร้างขึ้นได้ไม่ว่าจะเป็น: Sdwebimage, SdwebimageMapkit หรือทั้งสองอย่าง
ทำรายการต่อไปนี้ใน CartFile ของคุณ: github "SDWebImage/SDWebImage" จากนั้นเรียกใช้ carthage update หากนี่เป็นครั้งแรกที่คุณใช้ Carthage ในโครงการคุณจะต้องทำตามขั้นตอนเพิ่มเติมตามที่อธิบายไว้ที่ Carthage
หมายเหตุ: ในเวลานี้คาร์เธจไม่ได้ให้วิธีการสร้างส่วนประกอบย่อยที่เก็บเฉพาะเฉพาะ (หรือเทียบเท่ากับ subspecs ของ Cocoapods) ส่วนประกอบทั้งหมดและการพึ่งพาของพวกเขาจะถูกสร้างขึ้นด้วยคำสั่งข้างต้น อย่างไรก็ตามคุณไม่จำเป็นต้องคัดลอกเฟรมเวิร์กที่คุณไม่ได้ใช้ในโครงการของคุณ ตัวอย่างเช่นหากคุณไม่ได้ใช้
SDWebImageMapKitโปรดลบเฟรมเวิร์กนั้นออกจากไดเรกทอรี carthage build หลังจากcarthage updateเสร็จสมบูรณ์
หมายเหตุ: Apple ต้องการ SDWebimage มีลายเซ็น ดังนั้นโดยค่าเริ่มต้น
carthage buildBinary Framework ไม่ได้ออกแบบรหัสสิ่งนี้จะทำให้เกิดข้อผิดพลาดในการตรวจสอบความถูกต้อง คุณสามารถลงนามในตัวเองด้วยตัวตนของโปรแกรม Apple Developer หรือใช้ Binary Framework:
binary "https://github.com/SDWebImage/SDWebImage/raw/master/SDWebImage.json"
Swift Package Manager (SwiftPM) เป็นเครื่องมือในการจัดการการกระจายของรหัส Swift รวมถึงการพึ่งพา C-Family จาก Xcode 11, Swiftpm ได้รวมเข้ากับ Xcode
SDWebImage รองรับ Swiftpm จากเวอร์ชัน 5.1.0 หากต้องการใช้ SwiftPM คุณควรใช้ XCode 11 เพื่อเปิดโครงการของคุณ คลิก File -> Swift Packages -> Add Package Dependency ป้อน URL ของ SDWebImage Repo หรือคุณสามารถเข้าสู่ระบบ XCode ด้วยบัญชี GitHub ของคุณและพิมพ์ SDWebImage เพื่อค้นหา
หลังจากเลือกแพ็คเกจแล้วคุณสามารถเลือกประเภทการพึ่งพา (รุ่นแท็กสาขาหรือคอมมิชชัน) จากนั้น xcode จะตั้งค่าสิ่งของทั้งหมดให้คุณ
หากคุณเป็นผู้เขียนเฟรมเวิร์กและใช้ SDWebImage เป็นการพึ่งพาให้อัปเดตไฟล์ Package.swift ของคุณ:
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 จะตรวจสอบลายเซ็นของ Binary 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
ใบรับรองจะถูกเก็บไว้ใน repo ที่นี่
คีย์สาธารณะถูกเก็บไว้ใน repo ที่นี่
ดูเพิ่มเติม: การตรวจสอบที่มาของ 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 > นอกจากนี้ยังแนะนำให้ใช้ไวยากรณ์การนำเข้าโมดูลสำหรับ Cocoapods (เปิดใช้งาน modular_headers )/carthage/swiftpm
@import SDWebImage;
ณ จุดนี้พื้นที่ทำงานของคุณควรสร้างโดยไม่มีข้อผิดพลาด หากคุณมีปัญหาให้โพสต์ปัญหาและชุมชนสามารถช่วยคุณแก้ปัญหาได้
จาก Xcode 15 เราให้ไฟล์ PrivacyInfo.xcprivacy ใหม่สำหรับรายละเอียดความเป็นส่วนตัวดูการอธิบายการใช้ข้อมูลในความเป็นส่วนตัว
คุณสามารถส่งออกรายงานความเป็นส่วนตัวหลังจากเก็บถาวรแอปของคุณโดยรวม SDWebImage ผ่าน SwiftPM/XCFramework หรือ Cocoapods ( use_frameworks ตั้งค่าเป็น TRUE)
สำหรับเวอร์ชันเก่าหรือหากคุณใช้ Archive AR แบบคงที่ตามที่ต้องการโดยรายละเอียดความเป็นส่วนตัวของแอพใน App Store นี่คือรายการวิธีปฏิบัติในการรวบรวมข้อมูลของ SDWebimage
ขอบคุณทุกคนที่มีส่วนร่วมใน Sdwebimage แล้ว
ซอร์สโค้ดทั้งหมดได้รับอนุญาตภายใต้ใบอนุญาต MIT
หากต้องการเรียนรู้เกี่ยวกับการออกแบบสถาปัตยกรรมของ Sdwebimage เพื่อการสนับสนุนให้อ่านหลักของสถาปัตยกรรม Sdwebimage V5.6 ขอบคุณ @looseeyi สำหรับการโพสต์และการแปล