美文网首页iOS
iOS 屏幕横竖屏适配

iOS 屏幕横竖屏适配

作者: 9e5f2143c765 | 来源:发表于2017-04-19 15:24 被阅读169次

    首先把项目中的横竖屏打开如下图:

    (我是[self topViewController]的传送门)

    //判断哪个VC 需要横竖屏

    -(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {

    if ([NSStringFromClass([[self topViewController] class]) isEqualToString:@"FormViewController"]) {

    return UIInterfaceOrientationMaskAll;

    }else if ([NSStringFromClass([[self topViewController] class]) isEqualToString:@"ZCFViewController"]){

    return UIInterfaceOrientationMaskAll;

    }else if ([NSStringFromClass([[self topViewController]class]) isEqualToString:@"ProjectViewController"]){

    return UIInterfaceOrientationMaskAll;

    }else if ([NSStringFromClass([[self topViewController]class]) isEqualToString:@"CashJournalViewController"]){

    return UIInterfaceOrientationMaskAll;

    }

    return UIInterfaceOrientationMaskPortrait;

    }

    然后在你想要横竖屏的VC里面监听一个系统的通知就可以了

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

    [[NSNotificationCenter defaultCenter] addObserver:self

    selector:@selector(handleDeviceOrientationDidChange:)

    name:UIDeviceOrientationDidChangeNotification

    object:nil

    ];

    //实现监听到通知的方法

    #pragma mark 接收屏幕旋转的通知处理

    - (void)handleDeviceOrientationDidChange:(UIInterfaceOrientation)interfaceOrientation

    {

    //此处代码创建的subView 需要重新设置frame ,xib或者StoryBoard 创建的不需要重新设置

    //这个方法里面 self.view 的width和height 会改变,但是代码创建的subview的子view的frame,此处不会自动适配

    //此处重新设置一下 frame

    CGRect frame  = self.FormView.frame;

    frame = self.view.frame;

    self.FormView.frame = frame;

    //也可以做其他想要在横屏的时候做的事

    }

    相关文章

      网友评论

        本文标题:iOS 屏幕横竖屏适配

        本文链接:https://www.haomeiwen.com/subject/hzfhzttx.html