2

スライドインとビューの外にスライドしますが、UILabelスライドして戻ると消えます。持続させたい。

どうすればこれを達成できますか?また、なぜこれが起こるのですか?

コードは次のとおりです。

[UIView animateWithDuration:0.1
                          delay:0.0
                        options:UIViewAnimationOptionAutoreverse
                     animations:^{
                         [self.listLabel setFrame:CGRectMake(325, 141, 320, 181)];
                     }
                     completion:nil];

ありがとう。

4

4 に答える 4

2

公式ドキュメントでは

UIViewAnimationOptionAutoreverse アニメーションを前後に実行します。オプションと組み合わせる必要がありUIViewAnimationOptionRepeatます。

于 2012-08-10T02:26:45.973 に答える
0

ラベルに UIViewAnimationOptionCurveEaseOut と UIViewAnimationOptionCurveEaseIn アニメーション オプションを使用しないのはなぜですか? EasyOut アニメーションを使用して再度スライドインする場合は、ラベルの frame.origin.x = [スーパービューの境界の右側の外側] を設定し、元の位置に戻すだけです。これは私が話していることです...

CFRect frame = self.listLabel.frame;
//Point to hide your label by sliding it outside the right side of it's parent's view.
// mask or clipToBounds of parent's view must be YES
frame.origin.x = [self.listLabel.superview.frame.size.width]; 
[UIView animateWithDuration:0.1
                      delay:0.0
                    options:UIViewAnimationOptionCurveEaseIn
                 animations:^{
                     [self.listLabel setFrame:frame];
                 }
                 completion:nil];

また、スライドインしたい場合は、反対のアニメーションとラベルの元の位置を使用します。もちろん、元の位置をどこかに保存して、スライドインできるようにする必要があります。

 [UIView animateWithDuration:0.1
                      delay:0.0
                    options:UIViewAnimationOptionCurveEaseOut
                 animations:^{
                     [self.listLabel setFrame:label_original_frame];
                 }
                 completion:nil];
于 2012-08-10T03:02:07.473 に答える
0

まだ有効な答えがないように思われるので、(現在可能な) アプローチを提案します。

Xcode 6 では、アプリがシミュレーターで実行されている状態で、トップ バーの [デバッグ] に移動し、[デバッグの表示] と [ビュー階層のキャプチャ] を選択します。次に、行方不明のラベルを検索します。右側の Xcode バーには、Label のプロパティなども表示されます。

于 2015-04-09T12:38:56.127 に答える
0

UIViewAnimationOptionAutoreverse循環アニメーション用に設計されています。何かを画面外に跳ね返して戻すには、2 つのアニメーションとして記述する必要があります。

CGRect originalFrame = self.listLabel.frame;
[UIView animateWithDuration:0.05
                      delay:0.0
                    options:UIViewAnimationOptionLayoutSubviews
                 animations:^{
                     [self.listLabel setFrame:CGRectMake(325, 141, 320, 181)];
                 }
                 completion:^(BOOL finished){
                    [UIView animateWithDuration:0.05
                                          delay:0.0
                                        options:UIViewAnimationOptionLayoutSubviews
                                     animations:^{
                                         [self.listLabel setFrame:originalFrame];
                                     }
                                     completion:nil];
                 }
 ];
于 2012-08-13T17:46:18.927 に答える