`
stephen830
  • 浏览: 3011951 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

UIDeviceOrientation 和 UIInterfaceOrientation 设备旋转的用法 (实例)

 
阅读更多

 

UIDeviceOrientation 和 UIInterfaceOrientation 设备旋转的用法 (实例)

 

 

UIDeviceOrientation      是机器硬件的当前旋转方向   这个你只能取值 不能设置

UIInterfaceOrientation   是你程序界面的当前旋转方向   这个可以设置

 

判断设备现在的方向:

 

 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    //宣告一個UIDevice指標,並取得目前Device的狀況
    UIDevice *device = [UIDevice currentDevice] ; 
    
    //取得當前Device的方向,來當作判斷敘述。(Device的方向型態為Integer)
    switch (device.orientation) {
        case UIDeviceOrientationFaceUp:
	    NSLog(@"螢幕朝上平躺");
            break;
            
        case UIDeviceOrientationFaceDown:
	    NSLog(@"螢幕朝下平躺");
            break;
            
        //系統無法判斷目前Device的方向,有可能是斜置 
        case UIDeviceOrientationUnknown:
	    NSLog(@"未知方向");
            break;
            
        case UIDeviceOrientationLandscapeLeft:
	    NSLog(@"螢幕向左橫置");
            break;
            
        case UIDeviceOrientationLandscapeRight:
	    NSLog(@"螢幕向右橫置");
            break;
            
        case UIDeviceOrientationPortrait:
	    NSLog(@"螢幕直立");
            break;
            
        case UIDeviceOrientationPortraitUpsideDown:
	    NSLog(@"螢幕直立,上下顛倒");
            break;
            
        default:
	    NSLog(@"無法辨識");
            break;
    }

    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); // 只支持向左横向, YES 表示支持所有方向
}
 

Portrait 表示 纵向,Landscape 表示 横向。

 

typedef enum {
    UIDeviceOrientationUnknown,
    UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom
    UIDeviceOrientationPortraitUpsideDown,  // Device oriented vertically, home button on the top
    UIDeviceOrientationLandscapeLeft,       // Device oriented horizontally, home button on the right
    UIDeviceOrientationLandscapeRight,      // Device oriented horizontally, home button on the left
    UIDeviceOrientationFaceUp,              // Device oriented flat, face up
    UIDeviceOrientationFaceDown             // Device oriented flat, face down
} UIDeviceOrientation;

 

typedef enum {
    UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
    UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
    UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,
    UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft
} UIInterfaceOrientation;

 

#define UIDeviceOrientationIsPortrait(orientation)  ((orientation) == UIDeviceOrientationPortrait || (orientation) == UIDeviceOrientationPortraitUpsideDown)
#define UIDeviceOrientationIsLandscape(orientation) ((orientation) == UIDeviceOrientationLandscapeLeft || (orientation) == UIDeviceOrientationLandscapeRight)

 

上面是重要的源代码,已经解释的非常清楚。UIDeviceOrientationIsPortrait(orientation) 跟  ((orientation) == UIDeviceOrientationPortrait || (orientation) == UIDeviceOrientationPortraitUpsideDown) 完全是一个意思。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    show-view.zip_DEMO_iphone xml

    我们可以监听UIDeviceOrientation或UIInterfaceOrientation变化,然后在视图控制器中重写`shouldAutorotate`, `supportedInterfaceOrientations`和`willRotateToInterfaceOrientation:duration:`等方法来实现旋转...

    视频播放器 支持旋转、锁屏、各种手势

    2. **屏幕旋转**:为了支持屏幕旋转,NicooPlayer利用了UIKit中的UIDeviceOrientation和UIInterfaceOrientation相关的API,以及UIViewController的shouldAutorotate和supportedInterfaceOrientations方法。...

    iOS横竖屏旋转内容总结

    在 iOS 中,我们需要了解三个方向:UIDeviceOrientation、UIInterfaceOrientation 和 UIInterfaceOrientationMask。 UIDeviceOrientation Enum 枚举了设备的方向,包括 unknown、portrait、portraitUpsideDown、...

    MXRotationManager.zip

    1. **屏幕旋转机制**:iOS系统通过`UIDeviceOrientation`和`UIInterfaceOrientation`两个枚举类型来区分设备物理方向和应用界面方向。系统默认会根据设备的物理方向自动调整应用界面的方向。 2. **ViewController...

    屏幕旋转-兼容iOS16以上全部代码

    在iOS中,屏幕旋转主要涉及到`UIInterfaceOrientation`和`UIDeviceOrientation`这两个枚举。`UIInterfaceOrientation`定义了应用界面可能的方向,包括`UIInterfaceOrientationPortrait`(正向)、`...

    xcode 加速计 图片旋转

    在这个例子中,我们计算了设备的俯仰角(pitch)和翻滚角(roll),并应用到图片的`CALayer`上,使图片根据设备的移动而旋转。`rotationX`和`rotationY`属性分别控制图片沿X轴和Y轴的旋转。 要注意的是,为了优化性能,...

    ios-RotationTest.zip

    (NSTimeInterval)duration` 和 `(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation` 是两个关键的方法,用于在界面旋转前后的回调,可以在这里更新界面布局。 5. **Auto ...

    屏幕自动旋转和调节大小

    另外,从iOS 8开始,应用需要在UIViewController的`shouldAutorotate`、`supportedInterfaceOrientations`和`preferredInterfaceOrientationForPresentation`方法中明确声明支持的旋转方向。 其次,屏幕大小调节...

    自动旋转.zipIOS应用例子源码下载

    在iOS应用开发中,"自动旋转"是一个常见的功能需求,特别是在设计用户界面时,开发者需要考虑设备方向的变化,如从竖屏切换到横屏。这个压缩包“自动旋转.zip”包含了一个iOS应用的源码示例,非常适合学习者、个人...

    iOS开发中使用屏幕旋转功能的相关方法

    与此同时,UIInterfaceOrientation枚举用于表示用户界面的方向,与UIDeviceOrientation有所不同,因为它只关注于屏幕的显示方向,不考虑设备物理位置。例如,UIInterfaceOrientationLandscapeLeft对应于设备在左侧横...

    ios-iPad项目-QQ空间屏幕适配.zip

    这可以通过监听UIDeviceOrientation或UIInterfaceOrientation变化,然后更新布局约束来实现。另外,使用Size Classes可以方便地为横竖屏设置不同的布局。 3. **菜单栏**:在QQ空间应用中,菜单栏可能是底部工具栏...

    iOS游戏应用源代码——rpetrich-AllowRotate-5b5097a.zip

    1. **屏幕方向管理**:在iOS中,屏幕方向的管理涉及到`UIDeviceOrientation`和`UIInterfaceOrientation`两个枚举类型。开发者可能通过监听设备的物理方向变化,并结合`shouldAutorotate`、`...

    横屏的tableview使用方法

    可以使用第三方库如SDWebImage或Kingfisher,它们都支持异步加载和缓存图片,并提供处理图片尺寸的方法。在横屏模式下,可以调整图片的大小和缩放比例,使其更适合宽屏显示。 5. **数据源适配** 数据源方法如`...

    测试视频转屏控制

    在IT行业中,视频转屏控制是一项重要的技术,尤其在移动设备和智能电视...在测试过程中,应覆盖各种使用场景,包括设备静止、快速旋转以及在不同应用模式(如全屏、悬浮窗)下的表现,以确保用户体验的一致性和流畅性。

    视频播放器

    例如,当设备旋转到横向时,可能需要调整视频播放器的宽高比,同时更新UI元素的位置以适应新的屏幕尺寸。此外,可能还需要在Info.plist文件中声明支持的方向,确保应用能正确响应设备旋转。 项目中的"JR-Player-...

    iOS App开发中通过UIDevice类获取设备信息的方法

    这个类提供了丰富的属性和方法,使得开发者能够获取到设备的多个方面信息,包括但不限于设备名称、唯一标识符、系统名称、系统版本、设备型号以及电池状态等。下面我们将深入探讨这些知识点。 首先,我们可以使用`...

    网络视频播放 缓冲 横竖屏 时间 进度显示

    这些库提供了处理缓冲、屏幕旋转、时间同步和进度控制的接口和方法。 在具体实现过程中,还需要考虑到性能优化,比如预加载策略以减少缓冲等待时间,以及适当的错误处理机制来应对网络不稳定的情况。此外,对于用户...

    iOS-NBUCore:iOS项目的便利宏,功能和API可用性检查

    处理/转换UIInterfaceOrientation s / UIDeviceOrientation s等的函数。可用性当使用可能在旧设备上崩溃的新API调用时,暂时使Xcode发出警告。 // E.g. check for API that may crash on iOS 9.x devices.# define ...

Global site tag (gtag.js) - Google Analytics