0

私には頭痛の種があるプロジェクトがあります。それは、何かをすることで学ぶ必要があるため、iOSの基本的なことを見逃しているので、怒鳴らないでください。:-)。

私はiOSiPadストーリーボードを持っています。33-35ViewControllers。コンセプトは「世界」であり、アニメーション化されたUIImage(1,7fの持続時間で25png)がある表面に到達するまで、ビューごとに下に移動します。presentModalViewは、他のビューが下から入ってくるときに押し上げるのではなく、古いビューを上書きするだけなので、UIViewController + Transitions(http://srooltheknife.blogspot.no/2012/03/custom-transition-animation-for -modal.html)を使用して、古いビューの魔女の削除をアニメーション化することもできます。ただし、UIImageViewでアニメーションを使用するたびにこの追加のライブラリを使用すると、すべてのタッチイベントが無効になっているようです。ビュー、ボタン、ビューの両方でenableUserInteraction = YESを試しましたが、役に立ちませんでした。

何か案が?

アニメーションを含むviewControllerは次のとおりです。

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSLog(@"Main world view loaded....");
    NSLog(@"Bounds = %@", NSStringFromCGRect(self.view.bounds));
    //self.view.bounds = self.view.frame;
    NSLog(@"Bounds are now = %@", NSStringFromCGRect(self.view.bounds));
    self.view.clipsToBounds = YES;
    self.navigationController.navigationBarHidden = YES;
    self.view.userInteractionEnabled = YES;
    NSLog(@"User interaction is enabled?= %i", self.view.userInteractionEnabled);
    // Do any additional setup after loading the view, typically from a nib.
    NSMutableArray *images = [[NSMutableArray alloc] init];
    for (int i=1; i<=24; i++) {
        [images addObject:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"Untitled-%d", i] ofType:@"png"]]];
    }
    world.animationImages = images;
    world.animationDuration = 1.7;
    [world startAnimating];


    NSLog(@"Preparing audio");
    NSURL *audioURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"mainWorldSound" ofType:@"wav"]];
    NSError *audioError;
    player = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&audioError];
    if(audioError){
        NSLog(@"Error in audioplayer: %@", [audioError localizedDescription]);
    } else {
        AVAudioSession *audioSession = [AVAudioSession sharedInstance];
        [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:NULL];
        player.numberOfLoops = -1;
        player.volume = 1.0;
        if([player isPlaying]){
            [player stop];
        }
        [player prepareToPlay];
        [player play];
        NSLog(@"Playing with volume: %f", player.volume);
    }


    [self.view setNeedsLayout];
    [self.view setNeedsDisplay];
}

したがって、このビューがロードされる前に、スワイプイベントが下がるテキストと画像だけの5つのビューコントローラーがあります。これは、新しいViewController(上記)をロードしてアニメーション化するためのコードです。

- (IBAction)goToMainWorld:(id)sender {
    [self doVolumeFade];
    ViewController *mainWorld = [self.storyboard instantiateViewControllerWithIdentifier:@"mainWorld"];
    [self presentModalViewController:mainWorld withPushDirection:kCATransitionFromBottom];

}

見やすくするために、ストーリーボードからスクリーンショットを追加しています。ここ(まだ写真を投稿することは許可されていません):ここにリンクの説明を入力してください

また、ナビゲーションコントローラーのデフォルトを使用するようにUIViewController+Transitions.mを変更しようとしました

[self presentModalViewController:modalView animate:NO];

に:

[self.navigationController presentModalViewcontroller:modal view animate:NO];

しかし、そうすると、最初のアニメーション化されたビューコントローラーが正常に読み込まれますが、それが理にかなっている場合は、他のすべてのビューコントローラーが再アニメーション化されますか?

英語が下手でごめんなさい!

さらにコードを提供する必要がある場合は、お知らせください。:-)。

ありがとう

4

1 に答える 1

0

わかりました。自分で理解したのですが、「ビュー」ごとにビューを使用するという私のテクニックは、良い考えではなかったようです。

私はUIScrollViewを見たことがなく、試してみる価値があると考え、それが私にとっての解決策のように思えます。

MemoryViseはほぼ同じですが、マーケティングが必要とするトランジションなどを取得します。

現在の唯一の問題は、各ScrollViewページのサウンドをフェードインおよびフェードアウトさせ、下部にある2番目のUIScrollViewでサウンドを制御することです。

よろしくオードゥンありがとう

于 2012-09-07T14:06:51.533 に答える