ios8中的UIScreen

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#//apple_ref/occ/instp/UIScreen/nativeBounds

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. }
  override func prefersStatusBarHidden() -> Bool {
        return false

    }

显示横屏statusbar

时间: 2024-12-28 00:41:29

ios8中的UIScreen的相关文章

iOS8中的定位服务

My app that worked fine in iOS 7 doesn't work with the iOS 8 SDK. CLLocationManager doesn't return a location, and I don't see my app under Settings > Location Services either. I did a Google search on the issue but nothing came up, what could be wro

初探 iOS8 中的 Size Class

以前和安卓的同学聊天的时候,谈到适配一直是一个非常开心的话题,看到他们被各种屏幕适配折磨的欲仙欲死,心里真替他们高兴.不过在做到 iPhone 和 iPad 的适配的时候,一个页面需要配置多个 xib 进行开发还是个很头疼的事情.再加上 iPhone6 和 iPhone6 plus 的发布,适配似乎也变得麻烦起来.今天了解了 iOS8 中的 Size Class 之后,真的笑,笑出声. 简介 先来看一下我们的新伙伴:Size Classes.在 iOS8 中,我们不用再像以前那样,一个页面新建多

iOS8中使用CoreLocation定位

在iOS8中,苹果已经强制开发者在请求定位服务时获得用户的授权,此外iOS状态栏中还有指示图标,提示用户当前应用是否正在使用定位服务.另外在iOS8中,苹果进一步改善了定位服务,让开发者请求定位服务时需要向用户提供更多的透明.此外,iOS8中还支持让应用开发者调用全新的"访问监控"功能,当用户允许后应用才能获得更多的定位数据. iOS8以前使用CoreLocation定位 1.首先定义一个全局的变量用来记录CLLocationManager对象,引入CoreLocation.frame

[iOS] 初探 iOS8 中的 Size Class

转自:http://www.itnose.net/detail/6112176.html ? ? ? 以前和安卓的同学聊天的时候,谈到适配一直是一个非常开心的话题,看到他们被各种屏幕适配折磨的欲仙欲死,心里真替他们高兴.不过在做到 iPhone 和 iPad 的适配的时候,一个页面需要配置多个 xib 进行开发还是个很头疼的事情.再加上 iPhone6 和 iPhone6 plus 的发布,适配似乎也变得麻烦起来.今天了解了 iOS8 中的 Size Class 之后,真的笑,笑出声. 简介 先

iOS8中添加的extensions总结(一)——今日扩展

通知栏中的今日扩展 分享扩展 Action扩展 图片编辑扩展 文件管理扩展 第三方键盘扩展 注:此教程来源于http://www.raywenderlich.com的<iOS8 by Tutorials> 关于App extensions 的原理,即How extensions work 首先App扩展是一个App功能性上的扩展,它并不独立与你原来的App,也就是说在给App Store提交的时候是打包到原有App中一起提交,它们并不是独立的App.其次,App的每一种扩展都有自己单独的API

iOS8中UITableVIew分割线短的问题

在iOS8中会发现分割线默认是没有全部显示的,在iOS7中适用的代码 if ([self.myCardTableView respondsToSelector:@selector(separatorInset)]) { self.myCardTableView.separatorInset = UIEdgeInsetsZero; } 已经不管用了.而要在viewDidLoad中加入已下代码 if ([self.myCardTableView respondsToSelector:@selecto

iOS8中 UITableView section 分区头部视图不显示

最近自己使用了UITableView写了一个通讯录,但是在编写过程还算顺利,但是后来测试的时候,发现在iOS8中TableView的分区头不能正常显示,使用 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 方法可以正常的设置分区的Title,但是如果你使用了 - (UIView *)tableView:(UITableView *)tableView viewF

iOS8中UIAlertController的使用

iOS8中的UIAlertController包括了之前的UIAlertView和UIActionSheet,将它们集合成了自己的style: 1------------UIAlertControllerStyleAlert-----原有的UIAlertView UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"alertC" message:@"message" pr

掌握iOS8中的动态文本

原文链接 : Swift Programming 101: Mastering Dynamic Type in iOS 8 原文作者 : Kevin McNeish 译文出自 : 开发技术前线 www.devtf.cn 转载声明: 本译文已授权开发者头条享有独家转载权,未经允许,不得转载! 译者 : kmyhy Apple声称鼓励第三方App能够支持动态文本.但是,如果你尝试在App中实现这个特性,你会发现其中有很多坑(例如静态cell和定制cell样式).在本文中,我们将介绍动态文本的机理以及