使用UIViewController + Transitions时,UIImage Animation禁用按钮

时间:2012-09-03 09:45:46

标签: ios ios5 uiviewcontroller uiimageview uiviewanimation

我的项目给了我一些头痛,我认为这是因为我需要通过做事来学习,因此我错过了iOS中的一些基本内容,所以不要对我大喊大叫! : - 。)

我有一个iOS iPad故事板,包括大约。 33-35 ViewControllers。 这个概念就是“世界”,你可以通过视图向下看,直到你到达我有动画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];

}

为了让事情更容易看到我在我的故事板中添加截图.. 在这里(我不允许发布图片):enter link description here

我还尝试修改UIViewController + Transitions.m以使用navigationController 默认

[self presentModalViewController:modalView animate:NO];

要:

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

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

抱歉我的英语不好!

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

由于

1 个答案:

答案 0 :(得分:0)

好的..我有点想到了自己,看起来我对每个“视图”使用视图的技巧并不是一个好主意......

我从未见过UIScrollView并认为值得尝试,对我来说似乎是它的解决方案。

MemoryVise大致相同,但我现在得到营销所需的转换等。

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

由于 问候 奥登