判断屏幕横屏/竖屏

作者: YotrolZ | 来源:发表于2015-08-16 13:09 被阅读6221次
    • 在屏幕发生翻转的时候会调用一些方法:- (void)viewWillLayoutSubviews; / - (void)viewDidLayoutSubviews;以及- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator

    • 注意:这些方法都是在ViewController里面,在view中没有的

    方法一:

    • 使用- (void)viewWillLayoutSubviews;方法:
    - (void)viewWillLayoutSubviews
    
    {
    
         [self _shouldRotateToOrientation:(UIDeviceOrientation)[UIApplication sharedApplication].statusBarOrientation];
    
    }
    
    -(void)_shouldRotateToOrientation:(UIDeviceOrientation)orientation {
       if (orientation == UIDeviceOrientationPortrait ||orientation ==
                    UIDeviceOrientationPortraitUpsideDown) { // 竖屏
              
        } else { // 横屏
             
    }
    

    方法二:

    • 使用- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator
      • size : 屏幕翻转后的新的尺寸;
      • coordinator : 屏幕翻转过程中的一些信息,比如翻转时间等;
    #pragma mark - 屏幕翻转就会调用
    - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
    
        // 记录当前是横屏还是竖屏
        BOOL isLandscape = size.width == kLandscapeWidth;
        
        // 翻转的时间
        CGFloat duration = [coordinator transitionDuration];
        
        [UIView animateWithDuration:duration animations:^{
           
            // 1.设置dockview的frame
            [self.dockView rotateToLandscape:isLandscape];
            
            // 2.屏幕翻转后(设置完dockview的frame)要重新设置contentView的x值
            self.contentView.x = self.dockView.width;
            
        }];
    }
    
    • 子控件提供了一个方法- (void)rotateToLandscape:(BOOL)isLandscape;根据传入的isLandscape参数即可知道当前的屏幕状态,便于设置子控件在不同屏幕状态下的frame

    相关文章

      网友评论

      • b2efe7751b24:为什么我屏幕旋转不会调用这方法了,模拟器都可以,ios10系统
        b2efe7751b24:@khszvnoyesv6426 后面我发现是手机系统设置的不转屏.....哈哈哈哈
        b3394ee39e24:朋友你解决这个问题了吗 我也是遇到这个问题 viewWillTransitionToSize不调用
      • d2587c509cae:作者,方法1现在还能用吗?审核能过吗?我的App用方法1觉得挺好的,用方法2就有问题。方法2出现的问题是:当我竖屏调到另一个界面后,然后横屏,然后再返回到原来的界面后UI还是呈现出竖屏的状态。但是方法1有ViewWillLayoutSubviews这个方法就不存在上述的问题。但是我担心方法1不知道能过不?
      • 空转风:楼主,如果要在view里面判断横屏竖屏咋办?我想把masonry写在view里面但是没成功
        runnerisme:可以在控制器里判断,然后传给View

      本文标题:判断屏幕横屏/竖屏

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