l 的 layer 给你一个新的可用区域,计算然后赋值给 drawableSize 属性。
* Listing 2:
> CGSize drawableSize = self.bounds.size;
> drawableSize.width *= self.contentScaleFactor;
> drawableSize.height *= self.contentScaleFactor;
> metalLayer.drawableSize = drawableSize;
你可以参考 [MetalBasic3D](https://developer.apple.com/library/content/samplecode/MetalBasic3D/Introduction/Intro.html#//apple_ref/doc/uid/TP40014603). 另外,Xcode也提供了相应的模版,演示了这类操作。
#Additional Framework Changes
为了适应 iOS 8的变化,API做了以下改变。
###API Modernization
这个版本开始许多 frameworks 都有了很大的变化,他们都使用了 现代 Objective C 语法:
1. getter 和 setter 方法被属性代替。当然现存的 getter 和 setter 还有效。
2. 初始化的方法使用 instanceType 代替过去的 id。(这一点提升其实很大,对于代码安全来说,很好)
3. 指定初始化被声明在所有适合的地方。
多数情况下,你不需要改变你的代码。但是如果你适配了现代 Objective C 的代码,你将在 Swift 交互时获得有更好的体验。[Adopting Modern Objective-C](https://developer.apple.com/library/content/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html#//apple_ref/doc/uid/TP40014150 "Adopting Modern Objective-C")
###AV Foundation Framework
AVFoundation.framework 允许你在拍摄的时候获取元数据。任意类型的元数据都可以嵌入的视频记录各个时间点中。也就是说,你可以移动拍摄的设备中写入物理坐标。(所以照片信息里面是可以查到拍摄时的地理位置的,各位妹子当心哦)
###AVKit Framework
AVKit.framework 以前只在 OS X 中提供,现在在 iOS 上用来替换 MediaPlayer.framework 作为视屏播放器。
###CoreAudioKit Framework
新的 CoreAudioKit.framework 简化了使用 inter-app 视频时界面搭建的操作。
###Core Image Framework
CoreImage.framework 做了以下的改变:
1. 你可以在 iOS 中创建自定义图像内核。
2. Core Image 的探测器可以识别图片中的矩形和二维码。
###Core Location Framework
CoreLocation.framework 做了以下的修改:
1. 你可以定位到 iPhone 在一个高楼的哪个楼层里。
2. 访问服务给了需要位置信息(这些信息是用户关心的)的 app 一种新的重要位置变化服务。
###Core Motion Framework
CoreMotion.framework 提供了两个新的 class(CMAltimeter and CMAltitudeData)用来连接 6 和 6 Plus 的气压计。在这个两个设备上,你还可以用 CMMotionActivity 实例来判断用户是不是在自行车上。
###Foundation Framework
Foundation.framework 这个版本做了以下的增强:
1. NSFileVersion 这个类可以让你访问 iCloud 文件的历史版本。这些历史版本存在 iCloud 里,你可以请求下载。
2. NSURL 支持存储缩略图(它可以被当成元数据)。
3. NSMetadataQuery 这个类可以搜索你在 app 中打开过的其他 iCloud 文件。
###Game Controller Framework
GameController.framework 做了以下的修改:
1. 如果你连接了设备,你可以在 GameController.framework 里直接获取设备的运动信息。
2. 如果你必须要知道是否按住了 button 而不需要知道按压强度,仅当你的 button 状态变化时,会有一个新的句柄供处理。
###GameKit Framework
GameKit.framework 改了这些东西:
1. 那些 iOS 7 加入的特性现在被加入了 OS X 10.10,跨平台运行的游戏可以更加容易的用这些特性。
2. 新的 GKSavedGame 类以及 GKLocalPlayer 里面新的方法让开发者更容易保存用户的进度。这些数据存在 iCloud 中,GameKit 会在必要的时候同步两端的数据。
3. 用于标记用户的方法和属性被废弃了。使用 GKPlayer 对象去标记用户,新的方法和属性已经被加了进去。
###iAd Framework
iAd.framework 加了一些新的东西:
1. 如果你用了 AVKit 播放视频,你可以在开始播放前加滚动广告。
2. 你可以获取更多你的 app 中广告有效性的信息。
###Media Player Framework
&nbs