2012-10-18 51 views
0

我需要繪製圖像異步,但[UIImageView setImage:someImage]不是線程安全的。所以我必須自己實現一個線程安全的繪製函數。如何呈現UIImage異步?

在iOS中可能嗎?如何?我知道如何使用Quartz做自定義繪圖。

特別感謝!

+0

請訪問我的答案異步圖像http://stackoverflow.com/questions/12947523/asyncronous-image-loading-in-uitableview-cell/12947646#12947646 –

+0

但SDWebImage渲染圖像在主線程 – OpenThread

+0

所有界面的變化必須是在主線程中完成。在後臺線程上執行界面更改不會更新界面。 SDWebImage是一個異步圖像下載和緩存庫,是不是你想要的,像你的標題建議的異步UIImage? – Zhang

回答

0

您可以使用CALayerdrawsAsynchronously財產和實現自己的ImageView/imageLayer。這可能有助於提高GUI的響應速度。

+0

如果我應該使它與iOS5兼容,在iOS6中繪製異步實現 – OpenThread

+0

也許您可以使用CATiledLayer來執行異步繪製

+0

謝謝,它看起來很有幫助! – OpenThread

1

通常你只需要在後臺加載圖像。然後在前景線上繪製它們。看看這裏 loading images from a background thread using blocks

+0

我想在背景中繪製它們,使它們的容器滾動視圖更加平滑 – OpenThread

+0

您能告訴更多關於您嘗試實現的內容嗎?我仍然認爲,在後臺加載可能是你想要的... – HeikoG

+0

UIImage已經從本地文件加載,並在後臺線程中使用QuartzCore調整小。現在我想在內存中渲染UIImage以在後臺進行屏幕顯示。 – OpenThread