我在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];
}
如何在视图消失之前保持视图可见并完成动画?
答案 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];
}