2013-04-03 87 views
4
[UIView animateWithDuration:30.0f delay:0.0f options:UIViewAnimationOptionCurveEaseInOut animations:^{ 
    v.contentMode = UIViewContentModeScaleAspectFit; 
    v.frame = v.superview.bounds; 
} completion:^(BOOL finished) { 
    [v removeFromSuperview]; 
}]; 

我想要一個UIImageView來調整和更改contentMode,但上面的代碼不起作用。它在動畫開始時立即更改contentMode。無論如何要將UIImageView的contentMode從aspectFill動畫到aspectFit?

有沒有什麼辦法讓它動起來?

回答

1

UIImageView繼承contentMode財產UIView。它不是您可以製作動畫的屬性之一。更多信息可在View Programming Guide中找到。

+0

謝謝你,我意識到,它不能被使用的UIImageView來完成,所以我只是想找到一個EAZY辦法做到這一點:) – adali

+0

動畫框架可能是你最好的選擇,然後。 – MishieMoo

+0

我需要將它隱藏在視圖下並預先計算出達到目標的位置:) – adali

5

基於「What Can Be Animated」,無法直接爲contentmode創建動畫。但是,您可以嘗試對框架進行動畫處理,以獲得與contentmode相同的行爲。一旦動畫完成,您可以將contentmode和frame設置回原始。

+0

我想我只能將imageview設置爲子視圖,然後計算位置和大小,然後動畫 – adali

0

MishieMoo是正確的。 contentMode不能動畫。我認爲你可以改變視圖的界限來實現你想要的。

0

是contentMode不能使用動畫,但「中心」可 - 使用在情況contentMode動畫仿真那裏框架或邊界的動畫不適合該法案

0

我認爲你需要這樣的:https://github.com/vitoziv/VICMAImageView

您可以使用VICMAImageView像一個UIImageView,並在你的動畫塊動畫contentMode:

[UIView animateWithDuration:0.3 
       animations:^{ 
        imageView.contentMode = UIViewContentModeScaleAspectFill; 
       }]; 
8

正如其他人所說,沒有辦法爲contentMode設置動畫。

雖然這個庫存在解決這個問題! https://github.com/patrickbdev/PBImageView

imageView.contentMode = .scaleAspectFit 

UIView.animateWithDuration(1) { 
    self.imageView.contentMode = .scaleAspectFill 
} 
+1

謝謝!尼斯圖書館:) – Michael

+0

工作與複雜的UIViewController動畫過渡奇妙。謝謝! – user

相關問題