簡體   English   中英

iOS圖像加載器效果

[英]iOS image loader effect

我正在使用“ SVProgressHUD”作為加載程序。 當我想從url加載圖像時,我正在使用異步過程在后台加載圖像。 完成下載后,我正在更新UI。 在這段時間內,我在imageview上使用了占位符,並在加載器上使用了“ Please wait ..”。 但是我想使用“ Instagram”之類的裝載器。 這意味着,當從網上加載圖像時,它會加載原始圖像的模糊圖像,並且在下載圖像后,模糊圖像會顯示原始圖像。

有人可以建議我該怎么做嗎?

您正在談論的東西是Progressive JPEG

漸進JPEG(PJPEG)是一種圖像格式,用於存儲照片的多個單獨“掃描”,每個掃描的細節級別都不斷提高。 放在一起時,掃描將創建高質量的圖像。 第一次掃描給出的圖像質量很差,隨后的每次掃描進一步提高了細節和質量水平。 使用PJPEG下載圖像時,我們可以在第一次掃描后立即渲染圖像。 隨着以后掃描的進行,我們將更新圖像並以越來越高的質量重新渲染它。

因此,您必須使圖像以這種現代的漸進格式加載。您可以遵循一種方法,即在將每個圖像保存到服務器之前都將其轉換為適當的漸進格式。有幾種工具可用於不同類型的服務器。 例如jpegtran

要檢查圖像是否漸進,可以使用此工具工具2。您可以在在線工具中搜索許多可用的工具。

現在適用於iOS

您可以按照本教程

一些圖書館
協和
DFImageManager

假設您可以控制圖像的托管,則可以托管較低分辨率的圖像並進行兩次訪存,其中一項用於較低的分辨率,另一項用於較高的分辨率。 如果將較低分辨率的圖像的文件大小顯着減小,則其獲取將在獲取完整圖像之前完成,並使用該圖像填充UIImageView ,直到可以替換為止。

純粹的示例代碼如下所示:

let imageView = UIImageView()

let lowResOperation = NSBlockOperation {
    guard let imageData = NSData(contentsOfURL: NSURL(string: "https://myhost.org/low-res-image")!),
        image = UIImage(data: imageData) else { return }

    if imageView.image == nil {
        imageView.image = image
    }
}

let highResOperation = NSBlockOperation {
    guard let imageData = NSData(contentsOfURL: NSURL(string: "https://myhost.org/high-res-image")!),
        image = UIImage(data: imageData) else { return }

    imageView.image = image
}

let backgroundQueue = NSOperationQueue()
backgroundQueue.addOperations([lowResOperation, highResOperation], waitUntilFinished: true)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM