2014-09-02 34 views
0

我有一個非常討厭的問題。我有一個UIImageView在其中的ViewController。 UIImageView應顯示幻燈片。這些圖片來自NSURL,因此需要一些時間。Xcode加載緩慢的東西后視圖是可見的

- (void)viewDidLoad { [super viewDidLoad]; [self loadImages]; }

這是我得到從NSURL形象。我遇到的問題是,當圖像加載時,我只看到一個黑屏。 在-(void)loadImages方法的開始和結尾,我實現了一個UIActivityIndi​​cator來顯示加載時間。 我已經試過-(void)viewWillAppear-(void)viewDidLayoutSubviews,但沒有任何工作。

感謝您的幫助 雅尼

回答

1

你需要做的是異步加載圖像和填充他們,因爲他們進來(含委託或塊的回調,這取決於您使用API​​)。您絕對應該在從不在主線程上同步運行網絡代碼或任何其他可能長時間運行的操作。原因是UI在主線程上運行,所以如果您用自己的操作阻止UI,UI將無法更新,並且您的應用程序將無響應。

無論您是使用Apple的網絡框架還是類似AFNetworking(強烈推薦),都可以通過很多方式以最少的工作異步完成網絡連接。

1

您可能正在同步下載您的圖片。嘗試將其封裝在dispatch_async塊中以在另一個線程上運行它。

例子:

-(void)loadImages { 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) { 

     // download the images here 

     dispatch_async(dispatch_get_main_queue(), ^(void) { 

      // update the UI on the main thread 

     }); 

    }); 

} 

檢查出SDWebImage庫以及大多數這種繁重的工作給你做。

+0

這個作品完美!謝謝! – Jannes 2014-09-03 09:47:51

+0

如果解決了您的問題,您應該接受他的答案。 – 2014-09-03 16:50:46