代码语言:javascript复制
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toOrientation
duration:(NSTimeInterval)duration {
if (toOrientation == UIInterfaceOrientationLandscapeLeft ||
toOrientation == UIInterfaceOrientationLandscapeRight) {
[UIView beginAnimations:nil context:NULL]; {
[UIView setAnimationDuration:1.0];
}
[UIView setAnimationDelegate:self];
[viewA setFrame:CGRectMake(?,?,?,?)];
[viewB setFrame:CGRectMake(?,?,?,?)];
[viewC setFrame:CGRectMake(?,?,?,?)];
} [UIView commitAnimations];
} else if (toOrientation == UIInterfaceOrientationPortrait ||
toOrientation == UIInterfaceOrientationPortraitUpsideDown) {
[UIView beginAnimations:nil context:NULL]; {
[UIView setAnimationDuration:1.0];
}
[UIView setAnimationDelegate:self];
[viewA setFrame:CGRectMake(?,?,?,?)];
[viewB setFrame:CGRectMake(?,?,?,?)];
[viewC setFrame:CGRectMake(?,?,?,?)];
} [UIView commitAnimations];
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释
* } // Source @ http://www.jailbyte.ca/safari/files/SpinView.zip//// UntitledViewController.h// SpinView//// Created by Richard Vacheresse on 10-05-20.// Copyfright jailByte.ca 2010. Use it anyway you like.//#import <UIKit/UIKit.h>@interface UntitledViewController : UIViewController{ //-view (the image) used for manipulation by the accelerometer UIImageView *imageView;}@property (nonatomic, retain) UIImageView *imageView;- (IBAction) actionBtnOne;@end---------------------------------------------------------------------------//// UntitledViewController.m//// SpinView - this is an example of how to deal with the rotation of views via the accelerometer and the// overridden method shouldAutorotateToInterfaceOrientation. this example uses an image view as the view// that is being rotated; this imageview is created with the press of a button, the resulting action is to// simply show the layer in the view. from there you start to spin the device and the updates follow. to reset// the view you must press the home key and then restart the app; sorry, just too lazy to add anymore.//// **note: there is a bug to this solution, and it becomes apparent when using the device and the user rotates// the phone quickly 180 degrees. i believe it may have something to do with when the floats that are used// to hold the x and y values are updated while rotating; like it grabs the coordinates while spinnning past 90// degrees. the next time you rotate the view, the view will correct itself.//// Created by Richard Vacheresse on 10-05-20.// Copyfright jailByte.ca 2010. Use it anyway you like.//#import "UntitledViewController.h"@implementation UntitledViewController@synthesize imageView;- (void)viewDidLoad{ [super viewDidLoad]; //-create a button UIButton *btnOne = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [btnOne setTitle: @"btnOne" forState: UIControlStateNormal]; [btnOne setFrame:CGRectMake(0.0f, 0.0f, 105.0f, 55.0f)]; [btnOne setCenter:CGPointMake(160.0f, 55.0f)]; [btnOne addTarget:self action:@selector(actionBtnOne) forControlEvents:UIControlEventTouchUpInside]; //-add it to the display [self.view addSubview: btnOne];}//// actionBtnOne - initializes a UIImageView, sets the initial properties, add it to the display, then releases it.// - (IBAction) actionBtnOne{ imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)]; [imageView setImage:[UIImage imageNamed:@"image.png"]]; [imageView setAutoresizesSubviews: YES]; [self.view addSubview:imageView]; [imageView release];}//// shouldAutorotateToInterfaceOrientation - used to interact with the accelerometer; this is an overriden method.// - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ if ( interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) { //-set the center of the image from the dimensions of the display //-x value is 10 due to status bar [UIView beginAnimations: nil context: NULL]; [UIView setAnimationDuration: 0.25]; CGFloat x = self.view.bounds.size.height / 2 10; CGFloat y = self.view.bounds.size.width / 2; CGPoint center = CGPointMake( x, y); [imageView setCenter: center]; [UIView commitAnimations]; [UIView beginAnimations: nil context: NULL]; [UIView setAnimationDuration: 0.25]; //-this will keep it in the same position - always standing up //CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI / 0.5); //this will keep it standing up as in portrait however it will turn it upsidedown //CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI / 1.0); //this will change the view to be upside-down but in proper alignment with the landscape mode //CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI / 2.0); //this will change the view to be rightside-up in proper alignment with landscape mode CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI / -2.0); imageView.transform = transform; [UIView commitAnimations]; } else { //-set the center of the image from the dimensions of the display //-x value is 10 due to status bar [UIView beginAnimations: nil context: NULL]; [UIView setAnimationDuration: 0.25]; CGFloat x = self.view.bounds.size.height / 2 10; CGFloat y = self.view.bounds.size.width / 2; CGPoint center = CGPointMake( x, y); [imageView setCenter: center]; [UIView commitAnimations]; [UIView beginAnimations: nil context: NULL]; [UIView setAnimationDuration: 0.25]; CGAffineTransform move = CGAffineTransformMakeTranslation(0.0f, 0.0f); imageView.transform = move; CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI * 2); imageView.transform = transform; [UIView commitAnimations]; } // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);}- (void)dealloc{ [imageView release]; [super dealloc];}//-the@end
*/