首页 > 学院 > 开发设计 > 正文

ios8中的UIScreen

2019-11-14 19:38:54
字体:
来源:转载
供稿:网友
java代码 复制代码 收藏代码
  1. let orientation: UIInterfaceOrientation = UIapplication.sharedApplication().statusBarOrientation  
  2.      PRintln("Currently landscape: " + ((orientation == UIInterfaceOrientation.LandscapeLeft||orientation == UIInterfaceOrientation.LandscapeRight) ?"YES":"NO"))  
  3.      println("UIScreen.mainScreen().bounds: /(UIScreen.mainScreen().bounds)")  
  4.      println("UIScreen.mainScreen().applicationFrame: /(UIScreen.mainScreen().applicationFrame)")  
   let orientation: UIInterfaceOrientation = UIApplication.sharedApplication().statusBarOrientation        println("Currently landscape: " + ((orientation == UIInterfaceOrientation.LandscapeLeft||orientation == UIInterfaceOrientation.LandscapeRight) ?"YES":"NO"))        println("UIScreen.mainScreen().bounds: /(UIScreen.mainScreen().bounds)")        println("UIScreen.mainScreen().applicationFrame: /(UIScreen.mainScreen().applicationFrame)")

 在ios7中输出:

Currently landscape: NO

UIScreen.mainScreen().bounds: (0.0,0.0,320.0,568.0)

UIScreen.mainScreen().applicationFrame: (0.0,20.0,320.0,548.0)

Currently landscape: YES

UIScreen.mainScreen().bounds: (0.0,0.0,320.0,568.0)

 

UIScreen.mainScreen().applicationFrame: (20.0,0.0,300.0,568.0)

 

在ios8中输出:

Currently landscape: NO

UIScreen.mainScreen().bounds: (0.0,0.0,320.0,568.0)

UIScreen.mainScreen().applicationFrame: (0.0,20.0,320.0,548.0)

Currently landscape: YES

UIScreen.mainScreen().bounds: (0.0,0.0,568.0,320.0)

UIScreen.mainScreen().applicationFrame: (0.0,0.0,568.0,320.0)

 

结论:

1、在ios7中UIScreen.mainScreen().bounds是固定不变的值,在ios8中他的值是随横竖屏改变的!

为了在ios8中得到原来的效果可以:

Java代码 复制代码 收藏代码
  1. + (CGSize)screenSize {  
  2.     CGSize screenSize = [UIScreen mainScreen].bounds.size;  
  3.     return CGSizeMake(MIN(screenSize.width, screenSize.height), MAX(screenSize.width, screenSize.height));  
  4. }  
+ (CGSize)screenSize {    CGSize screenSize = [UIScreen mainScreen].bounds.size;    return CGSizeMake(MIN(screenSize.width, screenSize.height), MAX(screenSize.width, screenSize.height));}

 

2、

在ios8中增加了2个属性:

nativeBounds :  屏幕像素,不随横竖平改变的!

nativeScale   :1(non retina)/2(retina)/3(retina hd)

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScreen_Class/index.html

ios8输出:

Currently landscape: YES

UIScreen.mainScreen().bounds: (0.0,0.0,568.0,320.0)

UIScreen.mainScreen().applicationFrame: (0.0,20.0,568.0,300.0)

UIScreen.mainScreen().nativeBounds: (0.0,0.0,640.0,1136.0)

UIScreen.mainScreen().nativeScale: 2.0

Currently landscape: NO

UIScreen.mainScreen().bounds: (0.0,0.0,320.0,568.0)

UIScreen.mainScreen().applicationFrame: (0.0,20.0,320.0,548.0)

UIScreen.mainScreen().nativeBounds: (0.0,0.0,640.0,1136.0)

 

UIScreen.mainScreen().nativeScale: 2.0

 

3、从UIScreen.mainScreen().applicationFrame输出值看出,ios8默认横屏statusbar是隐藏掉了。你可以根据plist中

View controller-based status bar appearance的值的不同来用       

 

Java代码 复制代码 收藏代码
  1. UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)  
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)

 

Java代码 复制代码 收藏代码
  1. override func prefersstatusBarHidden() -> Bool {  
  2.       return false  
  3.   
  4.   }  
  override func prefersStatusBarHidden() -> Bool {        return false     }

显示横屏statusbar


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表