1.AppDelegate
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property(nonatomic,assign) BOOL shouldRote;
@end
-(UIInterfaceOrientationMask)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window
{
UIDevice *device = [UIDevice currentDevice];
if(!_shouldRote|| device.orientation==UIDeviceOrientationPortraitUpsideDown)
return UIInterfaceOrientationMaskPortrait;
//页面只横屏
return UIInterfaceOrientationMaskLandscapeRight;
//页面支持横竖旋转
//return UIInterfaceOrientationMaskLandscapeRight|UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskPortrait;
}
2、竖屏推到横屏(只横屏)
AppDelegate *delegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
delegate.shouldRote=YES;
[[UIDevice currentDevice] setValue:[NSNumber numberWithInt:UIDeviceOrientationLandscapeRight] forKey:@"orientation"];
Controller *controller = [[Controller alloc]init];
controller.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:controller animated:YES];
- (void)back
{
AppDelegate *delegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
delegate.shouldRote=NO;
[[UIDevice currentDevice] setValue:[NSNumber numberWithInt:UIDeviceOrientationPortrait] forKey:@"orientation"];
[self.navigationController popViewControllerAnimated:YES];
}
3、一个页面可横竖屏旋转
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
AppDelegate *delegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
delegate.shouldRote=YES;
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
AppDelegate *delegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
delegate.shouldRote=NO;
}
根据横竖屏更新UI
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
if (size.width > size.height) {
NSLog(@"横屏");
}
else{
NSLog(@"竖屏");
}
}
-(void) viewWillLayoutSubviews{
[super viewWillLayoutSubviews];
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationPortrait ) {
}else{
}
}
- (void)layoutSubviews{
[super layoutSubviews];
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationPortrait ) {
}else{
}
}
网友评论