2015-02-23 11 views
0

通常,當我們向UIImageView添加大圖像(此圖像視圖是子視圖)時,它需要整個窗口大小,因爲UIImageView需要一些時間來調整圖像視圖的大小。我想獲得最小調整大小時間(afterDelay時間)。如何等到uiimageview調整目標c

self.capturedImgV.image =image; 
    [self performSelector:@selector(resizeImageView) withObject:nil afterDelay:1]; 

回答

0

找到解決方案。

  dispatch_async(dispatch_get_main_queue(), ^{ 
       [self performSelector:@selector(resizeImageView) withObject:nil afterDelay:0]; 
       self.capturedImgV.contentMode = UIViewContentModeScaleAspectFit; 
      }); 

我們可以調整UIImageView異步請求的大小。然後它會立即調整大小。

+0

您對原始代碼感興趣,您將延遲設置爲1秒。這可能是你看到延遲的原因,大概一秒鐘左右。這個新代碼使用0作爲延遲。爲什麼不在原始代碼中使用0。它仍然在運行循環中計劃,所以應該給出相同的結果。 – 2015-02-24 09:39:26

1

下面的文章討論了縮放圖像的不同方法,並提出了縮放不同類型圖像的時間。

http://nshipster.com/image-resizing/

的重要信息是方法之間的相對定時。 UIKit似乎表現出色,所以最好不要擔心和接受速度,因爲它可能對其做的很少,除了在後臺渲染較小的版本,然後將視圖設置爲縮小版本一氣呵成。

一個想到的是你可能會提供UIImageView子類,並實現其drawRect:方法做計時,但它看起來像,因爲UIImageView進行了優化,直接繪製到屏幕上的圖像時繪製這不叫。

UIImageView類經過優化,可以將其圖像繪製到顯示屏上。 UIImageView不調用其子類的drawRect:方法。如果 您的子類需要包含自定義繪圖代碼,您應該改爲使用 子類UIView類。

+0

感謝您的文章。 +1 – 2015-02-24 03:46:58