横竖屏的转换,既可以手动操作实现,也可以自动旋转设备实现。
情况1:APP项目所有页面既支持横屏,又支持竖屏。
在项目配置中设置了支持横竖屏,则不需要对视图等做过多的配置即可实现横竖屏。如图所示:
情况2:APP项目根据需要,个别页面需要既支持横屏,又支持竖屏。
在项目配置中设置了只支持竖屏。如图所示:
实现逻辑
示例代码:
1、AppDelegate.h
中定义是否允许旋转的变量
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
/**
* 是否允许转向
*/
@property (nonatomic, assign) BOOL allowRotation;
@end
2、AppDelegate.m
中实现旋转的代理方法
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window
{
if (self.allowRotation) {
// 横竖屏
return UIInterfaceOrientationMaskAllButUpsideDown;
} else {
// 竖屏
return UIInterfaceOrientationMaskPortrait;
}
}
3、在需要支持横竖屏旋转的页面实现相关方法
(1)进入视图控制器时,允许横竖屏
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// 允许横竖屏
AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.allowRotation = YES;
}
(2)离开视图控制器时,恢复竖屏