2011-08-05 7 views
0

UISwitchを使用して開始されたアニメーションを作成したいと考えています。UISwitchでアニメーションを作成する

-(IBAction)displayStartingAddress:(id)sender{ 
    NSLog(@"starting displayStartingAddress"); 
    if (enterStartingAddress.hidden==YES) { 
     enterStartingAddress.hidden=NO; 
     startingAddress.hidden=NO; 

    }else{ 
     enterStartingAddress.hidden=YES; 
     startingAddress.hidden=YES; 
    } 
} 

そして「enterStartingAddress」と「startingAddress」のとき、私は、スイッチがそれらを下に移動するUI要素にアニメーションを起こしたい:スイッチがオンになっているとき、私は現在、いくつかのUI要素を非表示にするには、このコードを持っています表示されます。

私はiOSプログラミングとObjective-Cにはとても新しいので、助けていただければ幸いです。ありがとう。

+0

この質問は非常に明確ではない、あなたがそれを修正してくださいしてくださいすることができます。 – rich

+0

私はそう思った。簡単に言えば、スイッチが切り替わったときにいくつかのUI要素を移動したいと思います。 –

答えて

0

インターフェイス要素をすぐに非表示に設定すると、アニメーション中に非表示になるため、アニメーションは実行されません。あなたがしたいのは、alphaプロパティをアニメーション化することです。それがオブジェクトの可視性です。ここでは、フレームとアルファビットをアニメーションの例です。

-(IBAction)displayStartingAddress:(id)sender{ 
    CGRect frame1 = enterStartingAddress.frame; 
    CGRect frame2 = startingAddress.frame; 

    if (enterStartingAddress.alpha==0) { //not the best way to do it to be honest 
     frame1.origin.y += 100; 
     frame2.origin.y += 100; 
     [UIView animateWithDuration:0.5 animations:^{ 
      enterStartingAddress.alpha = 1; 
      startingAddress = 1; 
      enterStartingAddress.frame = frame1; 
      startingAddress.frame = frame2; 
     }];  
    } 

    else{ 
     frame1.origin.y -= 100; 
     frame2.origin.y -= 100; 
     [UIView animateWithDuration:0.5 animations:^{ 
      enterStartingAddress.alpha = 0; 
      startingAddress = 0; 
      enterStartingAddress.frame = frame1; 
      startingAddress.frame = frame2; 
     }]; 
    } 
} 
+0

これは正直なところフェイルセーフではありません。なぜなら、if文の1つを複製することに切り替えてインタフェースオブジェクトを100ポイント余分に移動させることができるからです。しかし、あなたは要点を得る。 –

+0

ありがとう、これは完全に働いた。 –

+0

@George:それがあなたを助けたら答えとしてマークする(緑のチェックボックスをクリックする)ことを忘れないでください!それから、あなたの質問が解決されたことを他の人に伝えます。 –

関連する問題