IOS UIDevice & IOS检测屏幕旋转实例详解手机开发

UIDevice类提供了一个单例实例代表当前的设备。从这个实例中可以获得的信息设备,比如操作系统名称、电池电量值(batteryLevel)、电池状态(batteryState)、设备的类型(model,比如iPod、iPhone等)、设备的系统(systemVersion)
屏幕的旋转朝向可以通过  [[UIDevice currentDevice]orientation] 判断,orientation是个Integer类型,每个值表示相应的朝向,必须在调用beginGeneratingDeviceOrientationNotifications方法后,此orientation属性才有效,否则一直是0。

// 
//  ViewController.m 
// 
  
#import "ViewController.h" 
  
@interface ViewController () 
/** 
 *  UIImageView 
 */ 
@property(nonatomic,strong)UIImageView *imageView; 
  
  
@end 
  
  
@implementation ViewController 
  
  
- (void)handleDeviceOrientationDidChange:(UIInterfaceOrientation)interfaceOrientation 
{ 
    //1.获取 当前设备 实例 
    UIDevice *device = [UIDevice currentDevice] ; 
      
      
      
      
    /** 
     *  2.取得当前Device的方向,Device的方向类型为Integer 
     * 
     *  必须调用beginGeneratingDeviceOrientationNotifications方法后,此orientation属性才有效,否则一直是0。orientation用于判断设备的朝向,与应用UI方向无关 
     * 
     *  @param device.orientation 
     * 
     */ 
  
    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; 
    } 
  
} 
  
  
- (void)viewDidLoad { 
  
      
    //设备名称  e.g. "My iPhone" 
    NSString *strName = [[UIDevice currentDevice] name]; 
    NSLog(@"设备名称:%@", strName); 
  
      
      
    /** 
     * 系统名称 e.g. @"iOS" 
     */ 
    NSString *strSysName = [[UIDevice currentDevice] systemName]; 
    NSLog(@"系统名称:%@", strSysName); 
      
      
  
    /** 
     * 系统版本号 e.g. @"4.0" 
     */ 
    NSString *strSysVersion = [[UIDevice currentDevice] systemVersion]; 
    NSLog(@"系统版本号:%@", strSysVersion); 
      
      
      
      
    /** 
     * 设备类型 e.g. @"iPhone", @"iPod touch" 
     */ 
    NSString *strModel = [[UIDevice currentDevice] model]; 
    NSLog(@"设备类型:%@", strModel); 
      
      
      
    /** 
     * 本地设备模式 localized version of model 
     */ 
    NSString *strLocModel = [[UIDevice currentDevice] localizedModel]; 
    NSLog(@"本地设备模式:%@", strLocModel); 
      
  
      
      
    /** 
     * UUID  可用于唯一地标识该设备 
     */ 
    NSUUID *identifierForVendor = [[UIDevice currentDevice] identifierForVendor]; 
    NSLog(@"UUID:%@", identifierForVendor.UUIDString); 
      
      
      
    /** 
     * UIImage 对象 
     */ 
    UIImage *image = [UIImage imageNamed:@"scroll.jpg"]; 
    self.imageView.image = image; 
      
    // 设置图片范围 
    CGFloat imageH = image.size.height; 
    CGFloat imageW = image.size.width; 
    CGFloat imageX = 0; 
    CGFloat imageY = 0; 
    self.imageView.frame = CGRectMake(imageX, imageY, imageW, imageH); 
    [self.view addSubview:self.imageView]; 
      
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 
  
  
-(void)viewDidAppear:(BOOL)animated 
{ 
      
    /** 
     *  开始生成 设备旋转 通知 
     */ 
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
      
      
    /** 
     *  添加 设备旋转 通知 
     * 
     *  @param handleDeviceOrientationDidChange: handleDeviceOrientationDidChange: description 
     * 
     *  @return return value description 
     */ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(handleDeviceOrientationDidChange:) 
                                                 name:UIDeviceOrientationDidChangeNotification 
                                               object:nil 
     ]; 
      
  
  
} 
  
  
  
-(void)viewDidDisappear:(BOOL)animated 
{ 
      
      
      
    /** 
     *  销毁 设备旋转 通知 
     * 
     *  @return return value description 
     */ 
    [[NSNotificationCenter defaultCenter] removeObserver:self 
                                                    name:UIDeviceOrientationDidChangeNotification 
                                                  object:nil 
     ]; 
      
      
    /** 
     *  结束 设备旋转通知 
     * 
     *  @return return value description 
     */ 
    [[UIDevice currentDevice]endGeneratingDeviceOrientationNotifications]; 
      
} 
  
  
  
- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
  
  
  
  
#pragma 懒加载 
  
- (UIImageView *)imageView 
{ 
    if (!_imageView) { 
        _imageView = [[UIImageView alloc] init]; 
    } 
    return _imageView; 
} 
  
@end

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/5196.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论