0

私は2つの画像をめくるというかなりよく使われている方法を採用しました。ただし、この機会に、現在私を超えている理由により、アニメーションは現在「newView」から「newView」にのみ反転しています。

私のやり方の誤りを指摘する助けをいただければ幸いです。次のようにコーディングします。

UIImageView *oldView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"dark_wood.png"]];
UIImageView *newView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"light_wood.png"]];
[container addSubview:oldView];

と:

[UIView transitionWithView:container
                  duration:2
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                animations:^{ [oldView removeFromSuperview]; [container addSubview:newView]; }
                completion:nil];

(これはおそらく、このコードを超えた単純なものです。)

4

2 に答える 2

1

それらがUIImageViewsである可能性がありますが、ここに私のために機能するいくつかのサンプルコードがあります。これは、ビューがロードされたメソッドが次のようになっているビューコントローラです。

[super viewDidLoad];
view1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
view1.backgroundColor = [UIColor yellowColor];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(0, 0, 50, 50);
[button addTarget:self action:@selector(thusFar:) forControlEvents:UIControlEventTouchUpInside];
[view1 addSubview:button];
[self.view addSubview:view1];

そして、これがボタンによって呼び出されるメソッドです

-(void)thusFar:(id)sender
{

    UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    view2.backgroundColor = [UIColor brownColor];
    [UIView transitionWithView:self.view duration:5 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{ [view1 removeFromSuperview]; [self.view addSubview:view2]; } completion:nil];
}

これは私のために働きます。先に進み、このコードを例として使用してください。しかし、私が見る唯一の違いは、UIViewsの代わりにUIImageViewsを使用していることです。UIImageViewがUIViewの子であることがわかりましたが、これは問題になる可能性があります。

于 2012-11-24T23:06:27.040 に答える
0

ソリューション:

フリップを開始するために使用していた方法に問題がありました。UISliderでフリップを呼び出しましたが、それを停止するシステムがないため、フリップアニメーションを継続的に呼び出していました。その結果、説明したとおりになりました。

次のようなコードの解決策:

アニメーションの繰り返し呼び出しBOOLを停止するには、を作成します。UISlider

BOOL playing;

UISliderのIBAction:

- (IBAction)slider:(id)sender {
    if (!playing) {
        [UIView transitionWithView:self.view
                      duration:3
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    animations:^{ [view1 removeFromSuperview]; [self.view addSubview:view2]; }
                    completion:nil];
        playing = YES;
    }
}

これを手伝ってくれたトニーに感謝します。スクリプトをクリーンに保つためのレッスンがあったとしても!

于 2012-11-25T00:43:52.680 に答える