iOS介面 點選按鈕切換橫屏豎屏
阿新 • • 發佈:2018-11-23
首先,看效果圖:
在這裡因為是要全域性介面都是支援豎屏,其他的不支援,在Xcode裡面的配置
然後就是在AppDelegate中新增屬性和方法
這個是viewController中,即需要轉換螢幕方向的.m檔案的程式碼:
#import "ViewController.h" #import "AppDelegate.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // _currentOrient = [UIApplication sharedApplication].statusBarOrientation; UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setTitle:@"轉一轉" forState:UIControlStateNormal]; [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; [button addTarget:self action:@selector(changeFrame:) forControlEvents:UIControlEventTouchUpInside]; button.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:button]; NSLayoutConstraint * centerX = [NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0]; NSLayoutConstraint * centerY = [NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0]; NSLayoutConstraint * width = [NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:100]; NSLayoutConstraint * height =[NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:44]; [NSLayoutConstraint activateConstraints:@[centerX,centerY,width,height]]; centerY.active = YES; centerX.active = YES; width.active = YES; height.active = YES; } // 允許自動旋轉 -(BOOL)shouldAutorotate{ return YES; } // 橫屏時是否將狀態列隱藏 -(BOOL)prefersStatusBarHidden{ return NO; } -(void)changeFrame:(UIButton *)btn{ btn.selected = !btn.selected; if (btn.selected) { [self forceOrientationLandscapeWith:self]; }else{ [self forceOrientationPortraitWith:self]; } } // 橫屏 home鍵在右邊 -(void)forceOrientationLandscapeWith:(UIViewController *)VC{ AppDelegate *appdelegate=(AppDelegate *)[UIApplication sharedApplication].delegate; appdelegate.isForcePortrait=NO; appdelegate.isForceLandscape=YES; [appdelegate application:[UIApplication sharedApplication] supportedInterfaceOrientationsForWindow:VC.view.window]; //強制翻轉螢幕,Home鍵在右邊。 [[UIDevice currentDevice] setValue:@(UIInterfaceOrientationLandscapeRight) forKey:@"orientation"]; //重新整理 [UIViewController attemptRotationToDeviceOrientation]; } // 豎屏 - (void)forceOrientationPortraitWith:(UIViewController *)VC{ AppDelegate *appdelegate=(AppDelegate *)[UIApplication sharedApplication].delegate; appdelegate.isForcePortrait=YES; appdelegate.isForceLandscape=NO; [appdelegate application:[UIApplication sharedApplication] supportedInterfaceOrientationsForWindow:VC.view.window]; //強制翻轉螢幕 [[UIDevice currentDevice] setValue:@(UIDeviceOrientationPortrait) forKey:@"orientation"]; //重新整理 [UIViewController attemptRotationToDeviceOrientation]; }