views:

236

answers:

1

Hi all, i'm looking for a way to make the menu system of my (very first) app scroll more smoothly. Currently I've got a panorma type view built in IB that's ~1900px wide by 480 tall image. On top of this are 8 buttons in various places along the view/image, when one of the buttons is selected i update 'xPoint' and call the below to update what's on screen (between 400-600px movement each time a button gets clicked in 1-2 seconds duration):

-(void)moveView:(NSNumber *)duration{
    [UIView beginAnimations:nil context:NULL];{
     [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
     [UIView setAnimationDuration:[duration floatValue]];
     [UIView setAnimationDelegate:self];  
     viewRect = self.view.frame;
     viewRect.origin.x = xPoint;
     self.view.frame = viewRect;  
    } [UIView commitAnimations]; 
}

I've set everything in IB to be opaque and have unselected 'Clear context before drawing' for every button/image. On a 3GS this seems smoother than a 3G device but still non-perfect - still getting stuttering on the animation.

Is there a better way to do this? If not is there any way i can optimize/smooth out the movement animation?

A: 

You should definitely use instruments to debug this issue (unless somebody has the answer right away). you can easily debug framerate + see what layers are opaque/transparent (with the 'blended layers' option in the Core Animation instrument..

Also, at the same time, measure other device activity (that might be the problem).

As a very last resort, you could also use an image to display the buttons. Create a 'screenshot' of the menu, and make THAT slide (that's only one item, a UIImageView). After (or just before) your animation is done, you could quickly replace the UIImageView with the real UIView, including the buttons.

I believe Apple also uses (a form) of this trick when quitting the app; you see the app become smaller and smaller until it disappears.

MiRAGe
hi, thanks for this ... i'd not used the CA instrument before ... interesting to see! according to the instrument framerate while animating didn't drop below 45ish but i was still seeing the animation jerks so tried the 'last resort'. this works well - i'm setting hidden off/on for all the buttons before the animation and it's noticeably more smooth, still not *perfect* but much better. many thanks!
Ben Roberts