2011-10-29 68 views
8

我無法將視圖的縮放比例設置爲零。這裏是我的代碼:將動畫UIView縮放爲零

[UIView animateWithDuration:0.3 animations:^{ 
    myView.transform = CGAffineTransformMakeScale(0.0, 0.0); 
} completion:^(BOOL finished){ 

}]; 

出於某種原因,認爲伸展和像舊顯像管關掉水平擠壓。如果我將比例縮放到(0.1, 0.1),它可以正確縮放,但當然不會爲零。

這是怎麼發生的?

+0

我仍然有同樣的問題,你找到一個解決方案? –

回答

4

嘗試:

[UIView animateWithDuration:0.3 animations:^{ 
    myView.frame = CGRectMake(myView.origin.x, myView.origin.y, 0.0, 0.0); 
} completion:^(BOOL finished){ 
}]; 
+0

或centre.x,centre.y消失到中心點 – jrturton

+2

謝謝,但我真的想要如果可能的話使用變換。視圖內容層次結構非常複雜,我必須通過每個子視圖的autoresizing mask屬性才能正確調整大小。 – pixelfreak

+0

如果您修改了定位點 – mhillsman

2

請使用:

myView.layer.transform = CGAffineTransformMakeScale(0.0, 0.0); 
+2

,我認爲您的意思是'myView.transform',這不起作用。 – Webdevotion

+0

對於縮放轉換,無法動畫到(0.0,0.0) –

7

如果有人仍然有興趣,這裏就是我所做的(斯威夫特),使其工作(幾乎):

UIView.animateWithDuration(1, animations: { 
    myView.transform = CGAffineTransformMakeScale(0.01, 0.01) 
}, completion: nil) 

如果持續時間很短,您不會發現這並不是完全按比例縮放到0,而是會有效消失。

1

如果有人仍然有這個問題,問題在於仿射變換矩陣對於比例因子0不是唯一的 - 沒有辦法知道如何在初始矩陣和零之間「正確」插值矩陣,所以你會得到像你所描述的怪異效果。

解決方案只是使用一個小但非零的比例值,例如,

[UIView animateWithDuration:0.3 
       animations:^{ myView.transform = CGAffineTransformMakeScale(0.01, 0.01); } 
       completion:nil];