2011-10-29 11 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

ありがとう、しかし私は本当に可能な限り変換を使用したいと思います。ビューのコンテンツ階層は非常に複雑で、適切にサイズを変更するために、各サブビューの自動サイズ変更マスクプロパティを調べる必要があります。 – 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

アフィン変換行列がゼロのスケール係数に対して一意ではないという問題があります。初期行列とゼロの間の「適切な」補間方法を知る方法がありませんあなたが説明したような奇妙な効果を得ることができます。この解決策は、小さいが非ゼロのスケール値、例えば、ゼロを使用することである。

[UIView animateWithDuration:0.3 
       animations:^{ myView.transform = CGAffineTransformMakeScale(0.01, 0.01); } 
       completion:nil]; 
関連する問題