CGContextDrawPDFPage上的图像动画

时间:2010-05-30 11:02:57

标签: iphone animation quartz-graphics

我在QuartzDemo示例应用程序中使用CGContextDrawPDFPage显示了一个pdf页面。

我希望显示此页面,并在此页面的顶部插入图片,就像在iBooks应用程序中可以看到的那样。

这是一本书,滑动图像是一个当您即将关闭书籍时滑入的书签。

我通过 DyingCactus 添加了此代码(提示:我是obj c和iphone dev的新手),如下所示:

在QuartzViewController.m中,动画开始显示但视图在动画结束前滑落,实际上我认为动画会在视图滑落时继续播放。

-(void)viewWillDisappear:(BOOL)animated
{
    [self.quartzView setFrame:CGRectMake(150, -200, 100, 200)];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1.0];
    [self.quartzView setFrame:CGRectMake(150, 0, 100, 200)];
    [UIView commitAnimations];  
}

如何在视图消失之前保持视图可见并完成动画?

1 个答案:

答案 0 :(得分:0)

我假设您正在修改Apple的QuartzDemo示例应用程序。

我现在想到的最佳方法是,当显示的视图是PDF视图时,用您自己的按钮替换导航控制器上的后退按钮。

您的自定义后退按钮可以根据需要管理动画和查看弹出序列。

唯一的烦恼是后退按钮不再具有左箭头形状。

以下是QuartzViewController.m中所需的更改:

#import "QuartzImages.h"  //<-- add this import
...
-(void)viewDidLoad
{
    // Add the QuartzView
    [scrollView addSubview:self.quartzView];

    //add custom back button if this is the PDF view...
    if ([self.quartzView isKindOfClass:[QuartzPDFView class]])
    {
        self.navigationItem.leftBarButtonItem =
        [[UIBarButtonItem alloc] initWithTitle:@"QuartzDemo"
                                 style:UIBarButtonItemStyleBordered
                                 target:self
                                 action:@selector(myBackButtonHandler:)];
    }
}

- (void)myBackButtonHandler:(id)sender
{
    [self.quartzView setFrame:CGRectMake(150, -200, 100, 200)];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
    [UIView setAnimationDuration:1.0];
    [self.quartzView setFrame:CGRectMake(150, 0, 100, 200)];
    [UIView commitAnimations]; 
}

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
    [self.navigationController popViewControllerAnimated:YES];
}