私には頭痛の種があるプロジェクトがあります。それは、何かをすることで学ぶ必要があるため、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];
しかし、そうすると、最初のアニメーション化されたビューコントローラーが正常に読み込まれますが、それが理にかなっている場合は、他のすべてのビューコントローラーが再アニメーション化されますか?
英語が下手でごめんなさい!
さらにコードを提供する必要がある場合は、お知らせください。:-)。
ありがとう