ibooks 3d 翻转效果 flip 3d


The iPhone has a set of nice transition animations which makes the experience using it very pleasant. But after a while one get so used of them that one stop noticing that they are even there. But this is not necessary a bad thing. Often I think that really good things doesn’t show at all,they don’t get in the way. In 3D application really good things make the experience so natural that one afterwards can wonder what the big deal was, really impressive 3D isn’t at all impressive. But,this is not about not noticing. After a while one maybe want to make that little extra in an iPhone app ie making a view transition more natural for the app. Some ebook readers have made page turning transitions.

I have for some time had the notion how to implement it,but as always, But frankly,nothing is really solved until it is shown to work. 

link

 So,this weekend I set out to make a reusable class for a OpenGL ES based view transition animation.

My idea was basically as following

  • Make a screen shot of the current view
  • Create a texture of the screen shot
  • Create a view with an OpenGL ES context,make it opaque=NO
  • Make it reusable with a delegate protocol for animation parts

Said and done. So how did this work? I’d say it worked pretty good. Maybe there is better ways to go from screen shot to texture but the well used screen grabbing code is solid.

UIGraphicsBeginImageContext(view.bounds.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetimageFromCurrentimageContext();
UIGraphicsEndImageContext();

utility should be valued by how easy it is used. Too often I see OOP programmers making no effort at simplify a framework. Read about pseudo-classes 

link

. So how much has to be done to use this transition view? It boils down to two parts,the actual animation and the integration into Cocoa touch views. The actual animation calls are what they are,but I separated it into two delegate methods, setupTransition and drawTransitionFrame. Then creating the objects and make use of them can look like this (from the demo project using the Utility Application Xcode template).

- (IBAction)showInfo {     
   
FlipsideViewController *controller = [[FlipsideViewController alloc]
                                          initWithNibName
:@"FlipsideView"
                                          bundle
:nil];
    controller
.delegate = self;

   
// Create animation delegate
   
DemoTransition *transition = [[[DemoTransition alloc] init] autorelease];

   
// Create animation view and Feed the delegate
   
EPGLTransitionView *glview = [[[EPGLTransitionView alloc]
                                   initWithView
:self.view
                                   
delegate:transition] autorelease];
   
[glview startTransition];

   
// Animation will be run on top off next view
   
[self presentModalViewController:controller animated:NO];
   
[controller release];
}

Update: Added features to include transition into next view,grabbing next view as a texture and making it available for the drawTransitionFrame method

Grab the source code and a Xcode demo project at github 

link

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...