iOS-设备屏幕方向

作者: FlyElephant | 来源:发表于2017-05-21 15:38 被阅读1010次

    iOS设备有Portrait (正向),Upside down (颠倒),Landscape Left (向左侧翻转)和 Landscape Right (向右侧翻转)四个方向.可以在AppDelegate可以根据设备来设置不同的方向:
    <pre><code>- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { return UIInterfaceOrientationMaskPortrait; }</code></pre>

    设备方向可以通过UIInterfaceOrientationMask枚举来设置:
    <pre><code>typedef NS_OPTIONS(NSUInteger, UIInterfaceOrientationMask) { UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait), UIInterfaceOrientationMaskLandscapeLeft = (1 << UIInterfaceOrientationLandscapeLeft), UIInterfaceOrientationMaskLandscapeRight = (1 << UIInterfaceOrientationLandscapeRight), UIInterfaceOrientationMaskPortraitUpsideDown = (1 << UIInterfaceOrientationPortraitUpsideDown), UIInterfaceOrientationMaskLandscape = (UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight), UIInterfaceOrientationMaskAll = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown), UIInterfaceOrientationMaskAllButUpsideDown = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight), } __TVOS_PROHIBITED;</code></pre>

    如果项目中有些页面要求特定的方向旋转,可以在ViewController中设置:
    <pre><code>`- (BOOL)shouldAutorotate {
    return YES;
    }

    • (UIInterfaceOrientationMask)supportedInterfaceOrientations {
      return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationLandscapeRight;
      }`</code></pre>

    默认方向设置:
    <pre><code>- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationPortrait; }</code></pre>

    旋转通知:
    <pre><code>[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceOrientationChange:) name:UIDeviceOrientationDidChangeNotification object:nil];</code></pre>
    <pre><code>`- (void)deviceOrientationChange:(NSNotification *)notification {

    UIDeviceOrientation  orient = [UIDevice currentDevice].orientation;
    
    switch (orient) {
        case UIDeviceOrientationPortrait:
            
            break;
        case UIDeviceOrientationLandscapeLeft:
            
            break;
        case UIDeviceOrientationPortraitUpsideDown:
            
            break;
        case UIDeviceOrientationLandscapeRight:
            
            break;
            
        default:
            break;
    }
    

    }`</code></pre>

    状态栏变更通知:
    <pre><code>[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceOrientationChange:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];</code></pre>
    <pre><code>`- (void)statusBarOrientationChange:(NSNotification *)notification{

    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
    
    if (orientation == UIInterfaceOrientationLandscapeRight) {
        
    }
    
    if (orientation ==UIInterfaceOrientationLandscapeLeft) {
    
    }
    
     if (orientation == UIInterfaceOrientationPortrait){
         
     }
    
    if (orientation == UIInterfaceOrientationPortraitUpsideDown){
    
    }
    

    }`</code></pre>

    相关文章

      网友评论

        本文标题:iOS-设备屏幕方向

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