0

我的项目让我有些头疼,我认为这是因为我需要边做边学,因此我错过了 iOS 中的一些基本知识,所以不要对我大喊大叫!:-)。

我有一个 iOS iPad 故事板,由大约。33-35 视图控制器。这个概念是“世界”,你逐个查看,直到你到达我有一个动画 UIImage 的表面(25png,1,7f 持续时间)。由于 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 以使用 navigationController Default

[self presentModalViewController:modalView animate:NO];

至:

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

但是如果我这样做,它会很好地加载第一个动画视图控制器,但如果这有意义的话,所有其他只是第一个被重新动画的视图控制器?

对不起,我的英语不好!

如果我需要提供更多代码,请告诉我!:-)..

谢谢

4

1 回答 1

0

好的..我自己已经弄清楚了,似乎我为每个“视图”使用视图的技术并不是一个好主意..

我从未见过 UIScrollView 并认为值得一试,而且它似乎是我的解决方案。

MemoryVise 大致相同,但我现在得到了市场营销想要的转换等。

现在唯一的问题是让每个 ScrollView 页面的声音淡入和淡出,并控制底部第二个 UIScrollView 中的声音似乎让我有些头疼。

谢谢问候奥登

于 2012-09-07T14:06:51.533 回答