iOS 8 一瞥

iOS 8
牛刀小试

1、UIWindow的bounds发生变化(Window本身发生了旋转)

  iOS 7之前Window的bounds不会随着方向而变化,但是到了iOS
8以后,随着设备方向的旋转,window.bounds.size.width和window.bounds.size.height也会相应发生变化。

  做个很简单的测试,代码如下:


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification
object:nil];

return YES;
}

- (void)orientationChanged:(NSNotification*)noti {

UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
NSString *orientationDes = nil;
switch (orientation) {
case UIDeviceOrientationLandscapeLeft:
orientationDes = @"UIInterfaceOrientationLandscapeRight";
break;
case UIDeviceOrientationLandscapeRight:
orientationDes = @"UIInterfaceOrientationLandscapeLeft";
break;
case UIDeviceOrientationPortrait:
orientationDes = @"UIInterfaceOrientationPortrait";
break;
case UIDeviceOrientationPortraitUpsideDown:
orientationDes = @"UIInterfaceOrientationPortraitUpsideDown";
break;
default:
orientationDes = @"";
break;
}

NSLog(@"system ver: %@, \rorientaion: %@, \rwindow bounds: %@",
[UIDevice currentDevice].systemVersion,
orientationDes,
NSStringFromCGRect(self.window.bounds));
}

  示例代码很简单,新建一个工程,然后在delegate中直接添加以上代码即可。

  iOS 8上运行结果为:

?





1

2

3

4

5

6

7

8

9

10

11

12

2014-06-04 09:26:32.016 SviOS8[4143:61114] system ver: 8.0,

orientaion: UIInterfaceOrientationLandscapeRight,

window bounds: {{0, 0}, {320, 480}}

2014-06-04 09:26:34.788 SviOS8[4143:61114] system ver: 8.0,

orientaion: UIInterfaceOrientationPortrait,

window bounds: {{0, 0}, {480, 320}}

2014-06-04 09:26:35.791 SviOS8[4143:61114] system ver: 8.0,

orientaion: UIInterfaceOrientationLandscapeLeft,

window bounds: {{0, 0}, {320, 480}}

2014-06-04 09:26:47.468 SviOS8[4143:61114] system ver: 8.0,

orientaion: UIInterfaceOrientationPortraitUpsideDown,

window bounds: {{0, 0}, {480, 320}}

  iOS 7及之前的版本运行结果为:

?





1

2

3

4

5

6

7

8

9

10

11

12

2014-06-04 09:39:00.527 SviOS8[4380:70b] system ver: 7.0.3,

orientaion: UIInterfaceOrientationLandscapeRight,

window bounds: {{0, 0}, {320, 480}}

2014-06-04 09:39:00.895 SviOS8[4380:70b] system ver: 7.0.3,

orientaion: UIInterfaceOrientationPortrait,

window bounds: {{0, 0}, {320, 480}}

2014-06-04 09:39:01.225 SviOS8[4380:70b] system ver: 7.0.3,

orientaion: UIInterfaceOrientationLandscapeLeft,

window bounds: {{0, 0}, {320, 480}}

2014-06-04 09:39:11.004 SviOS8[4380:70b] system ver: 7.0.3,

orientaion: UIInterfaceOrientationPortraitUpsideDown,

window bounds: {{0, 0}, {320, 480}}

  通过对比我们可以清晰的看到iOS
8中UIWindow在处理旋转时策略的变更,虽然会因为与之前的版本不同导致现有项目布局存在的bug,但是可以看到iOS
8中的处理方式更加符合我们的预期,在竖向的时候我们就获取到width < height, 在横向则是 width >
height,这个符合所见即所得的原则。

  题外话,不管是iOS 7还是之前的版本,以及最新出的iOS
8,所有的ViewController的bounds都是正确的,所以只需要坚持一个原则“所有布局都是基于VC.view.bounds布局,那么你的App的显示就一切正常。”

  当然如果你有任何View不受VC的管理,直接添加到window上,那么就悲剧了,请添加代码去单独支持。

  好消息:所有基于iOS 7
SDK编译的程序,window的机制还遵循原来的机制,也就是说可以平滑过度到iOS系统,所有界面布局一切正常。不得不说苹果这一点做的真赞,不愧是一家伟大的公司。

  

2、安装iOS 8
beta版本注意事项

  官方给出的注意事项地址: http://adcdownload.apple.com//wwdc_2014/ios_8_beta_wg4j9a/ios_beta_software_installation_guide.pdf

  主要意思是:

  1)升级后不可降级,so升级之前还是想清楚

  2)做好备份工作,因为毕竟是beta版本,可能有些不稳定的地方,可能在升级过程中会丢失数据

  3)支持设备:

  iPhone 4s, iPhone 5, iPhone 5c, iPhone 5s,
iPod touch (5th gen),
  iPad 2,
iPad with Retina display, iPad Air and iPad mini

  4)目前只支持开发者预览

  5)反馈问题地址如下: https://developer.apple.com/bug-reporting/

  

3、QR Code支持

  Core Image framework (CoreImage.framework)新增了如下API:

  • 支持自定义imageKernels

  • 增加矩形检测和图片中二维码识别功能

  详细文档: Core Image Reference Collection.

注:本篇文章,持续更新,欢迎一起讨论iOS
8

  如果觉得本文帮到了你,请推荐给身边的朋友

  转载请著名出处,有什么问题欢迎留言

iOS 8 一瞥,布布扣,bubuko.com

时间: 2024-08-08 13:58:13

iOS 8 一瞥的相关文章

微微一瞥很倾城IOS隐私政策

微微一瞥很倾城尊重和保护利用用户的隐私所有的服务.为了向您提供更准确,更人性化的服务,将微微一瞥很倾城使用和披露按照本隐私政策您的个人信息. 但是微微一瞥很倾城将是一个高度的勤勉,审慎义务对待这些信息.除本隐私政策另有规定外,未经您的许可之前,微微一瞥很倾城信息将不会被披露或向第三方提供. 微微一瞥很倾城更新本隐私政策不时.当您同意微微一瞥很倾城服务协议,您将被视为已同意本隐私政策的全部内容.本隐私政策属于服务协议微微一瞥很倾城不可分割的一部分. 1.范围 一)微微一瞥很倾城当您注册一个帐户,您

iOS开发者程序许可协议

请仔细阅读下面的许可协议条款和条件之前下载或使用苹果软件.   这些条款和条件构成你和苹果之间的法律协议. 目的 你想使用苹果软件(如下定义)来开发一个或多个应用程序(如下定义)Apple-branded产品运行iOS. 苹果愿意授予您有限的许可使用苹果软件开发和测试您的应用程序在本协议规定的条款和条件. 开发的应用程序在此协议下可以分布在四个方面:(1)通过应用程序商店,如果选择苹果,(2)通过VPP / B2B项目网站,如果选择苹果,(3)在一个有限的基础上使用注册设备(如下定义),和(4)

iOS中的预编译指令的初步探究

看到非常好的两篇技术文,转来方便自己查看. 转自:http://www.cnblogs.com/daiweilai/p/4234336.html 开篇 我们人类创造东西的时候有个词叫做”仿生学“!人类创造什么东西都会模仿自己来创造,所以上帝没有长成树的样子而和人长得一样,科幻片里面外星人也像人一样有眼睛有鼻子……但是人类自己创造的东西如果太像自己,自己又会吓尿(恐怖谷效应),人类真是奇葩:奇葩的我们在20世纪创造了改变世界的东西——计算机(电脑),不用怀疑,这货当然也是仿生学!这货哪里长得像人了

IOS开发之宏的深度学习(转)

宏定义在C系开发中可以说占有举足轻重的作用.底层框架自不必说,为了编译 优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行.而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似 乎对宏的使用和依赖并不多.但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可读性大大增加. 如果想成为一个能写出漂亮优雅代码的开发者,宏定义绝对是必不可少的技能 (虽然宏本身可能并不漂亮优雅XD).但是因为宏定义对于很多人来说,并不像业务逻辑那样是每天会接触的东西.即使是

iOS开发笔记--宏定义的黑魔法 - 宏菜鸟起飞手册

宏定义在C系开发中可以说占有举足轻重的作用.底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行.而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似乎对宏的使用和依赖并不多.但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可读性大大增加.如果想成为一个能写出漂亮优雅代码的开发者,宏定义绝对是必不可少的技能(虽然宏本身可能并不漂亮优雅XD).但是因为宏定义对于很多人来说,并不像业务逻辑那样是每天会接触的东西.即使是能偶尔使

iOS -- SKSpriteNode类

SKSpriteNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKSpriteNode.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术

使用fruitstrap实现命令行将IPA包安装到iOS设备上

Requirements Mac OS X. Tested on Snow Leopard only. You need to have a valid iPhone development certificate installed. Xcode must be installed, along with the SDK for your iOS version. Usage fruitstrap [-d] -b <app> [device_id] Optional -d flag laun

iOS -- SKScene类

SKScene类 继承自 SKEffectNode:SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKScene.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开

iOS -- SKPhysicsWorld类

SKPhysicsWorld类 继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKPhysicsWorld.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术文档.虽然已经审阅了本文档的技术准确性,但是它不是最终的版本.本机密信息仅适用于