2011-08-06 12 views
0

ボタンを押したときにUIPickerViewが滑ってしまうところに実装しようとしているエフェクトに問題があります。UIPickerViewアニメーショングリッチ

-(IBAction)slideUp:(id)sender{ 
if([sender currentTitle] == @"Select"){ 

[pickerView setFrame: CGRectMake(0, 415.0, 320.0, 216.0)]; 
[UIView beginAnimations: nil context: NULL]; 
[UIView setAnimationDuration: 0.5]; 
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; 
[pickerView setFrame: CGRectMake(0, 201.0, 320.0, 216.0)]; 
[UIView commitAnimations]; 
[slideButton setTitle:@"Done" forState:UIControlStateNormal]; 

}}

あなたが見ることができるように、コードを最初にチェックボタンのタイトルは、「選択」または「完了」であり、それは選択された場合、それはUIPickerViewにスライドする場合。しかし、アプリケーションをビルドするたびに、ボタンを初めて押すたびに、UIPickerViewがすぐに終了位置に表示され、ビューの外にスライドします。ボタンのタイトルは変更されません。この最初のグリッチの後、それはうまく動作します。

なぜこのようなことが起こっているのか分かっていたり、すぐに解決できると思われる場合は、本当に感謝します。

ルーク

答えて

0

は、私はあなたがこのグリッチを得ている理由はわからないんだけど、私はあなたのコードでは異なるだろうがいくつかあります。まず、ピッカービューの最初のフレームを、別の方法(恐らく作成直後)で遠く離れた場所に設定します。それからアニメーションブロックの前の最初のフレームを新しいCGRect構造体に参照するだけです。これをアニメーション化して再割り当てします。第2に、ピッカービューのyコンポーネントをアニメーション化したいだけなら、アニメーションでもそれを指定します。ここで

は、あなたのコード内で私の変化です:これは任意の良好な場合

-(IBAction)slideUp:(id)sender { 

if([sender currentTitle] == @"Select") { 

CGRect pickerFrame = pickerView.frame; // You set pickerView.frame in some other method. 

[UIView beginAnimations: nil context: NULL]; 
[UIView setAnimationDuration: 0.5]; 
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; 

pickerFrame.origin.y = 201.0f; 
pickerView.frame = pickerFrame; 

[UIView commitAnimations]; 

[slideButton setTitle:@"Done" forState:UIControlStateNormal]; 

} 

は教えてください。

+0

返信いただきありがとうございます。私はあなたのコードを実装し、同じことが起こった。たぶんiOSシミュレータなのかもしれません。私がiPhoneをプロビジョニングすると、うまくいかないのはなぜか分からないからです。 –

+0

私は何の問題もなく、私のアプリで実行されている類似のアニメーションを持っています。私は実際に上記のコードを実行し、アニメーションはグリッチフリーです(私はPickerViewを使用しませんでしたが、単純なUIViewです)。私は本当になぜこれがあなたに起こっているのか分かりません。理由を知りたければ、私と一緒に確認してください。私は非常に知りたいです。 – MiguelB

+0

OK、やります。助けてくれてありがとう! –