一、第一次做转屏的时候走了不少弯路,过一段时间不写,发现忘了差不多了,还好有度娘和google,让我很快找到感觉,下面来谈谈我对转屏的了解(有不对的地方或更好的方法请留言,不胜感激!!!)
iOS6前的转屏比较简单就一个方法
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return (toInterfaceOrientation == UIInterfaceOrientationPortrait) || (toInterfaceOrientation ==UIInterfaceOrientationLandscapeLeft) || (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
iOS6及以后
①告知Appdelegate要支持转屏的方向
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow*)window {
returnself.orientation;
}
②在需转屏的viewController
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
AppDelegate *del = (AppDelegate *)[UIApplicationsharedApplication].delegate;
del.orientation = UIInterfaceOrientationMaskAllButUpsideDown;
}
③在需转屏的viewController加
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
- (BOOL)shouldAutorotate {
returnYES;
}
二、手动转屏(按一个按钮或者一个事件触发)
1、假转屏
①转状态栏
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:YES];
②旋转当前view
self.view.transform = CGAffineTransformRotate(self.view.transform, M_PI/4);
2、用私有方法转屏(此类要在ARC),上Appstore慎用
- (void)setCustomOrientation:(NSString *)orientate {
UIInterfaceOrientation orientation = orientate.intValue;
if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
[[UIDevice currentDevice] performSelector:@selector(setOrientation:) withObject:(id)orientation];
}
}