ios 自動(手動)轉屏,ios
一、第一次做轉屏的時候走了不少彎路,過一段時間不寫,發現忘了差不多了,還好有度娘和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];
}
}