标签:style blog http color 使用 os
苹果WWDC2014大会公布了许多关于iOS8的激动人心的更新,包括iCloudDrive、OSXYosemite与iOS8的协作、iBook共享机制、Quick Type预测输入、Swift编程语言、iOS8向上兼容等等亮点,本文重点从针对开发者的新功能API进行介绍。
另外,新加入的 Extensions 特性只支持:
一、Swift
http://practicalswift.com/2014/06/14/the-swift-standard-library-list-of-built-in-functions/
二、WEB开发者的福音
作为一位WEB前端工作者,先看一下新的WebKit,从此苹果开发者可以更好的用HTML+JS开发iPhone应用了。
不再要用 UIWebView,也不要用 Interface Builder,WKWebView直接作为视图view
首先,创建一个 Single View Application 软件。然后加入 WebKit.framework(Build Phases->Link Binary With Libraries)。
在你的 ViewController 中,可以开始使用 WKWebView 了。在 loadView 函数里把 view 设定成 WKWebView,在 viewDidLoad() 里就可以直接连去网站了(做法和 UIWebView 一样)。
import UIKit import WebKit class ViewController: UIViewController { var webView: WKWebView? = WKWebView() override func loadView() { super.loadView() view = webView } override func viewDidLoad() { super.viewDidLoad() webView!.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.apple.com"))) } }
三、Sprite Kit框架的改进
在WWDC2014上,Sprite Kit又有了很多新的提升!其中一个很有意思的东西就是Physics Field!也就是物理场!这意味着我们在Sprite kit上编写虚拟物理场的游戏将变得非常简单!
在viewDidLoad函数里对SKview做一些初始化操作,添加从GameScene.sks文件读取的SKScene的presentScene到一个SKView
override func viewDidLoad() { super.viewDidLoad() if let scene = SKScene.unarchiveFromFile("GameScene") as? SKScene {
// Configure the view. let skView = self.view as SKView skView.showsFPS = true skView.showsNodeCount = true /* Sprite Kit applies additional optimizations to improve rendering performance */ skView.ignoresSiblingOrder = true /* Set the scale mode to scale to fit the window */ scene.scaleMode = .AspectFill skView.presentScene(scene) } }
创建一个新的类继承SKScene并重载其方法
class SKScene : SKEffectNode { init(size: CGSize) class func sceneWithSize(size: CGSize) -> Self! var size: CGSize var scaleMode: SKSceneScaleMode var backgroundColor: UIColor! var delegate: SKSceneDelegate! var anchorPoint: CGPoint var physicsWorld: SKPhysicsWorld! { get } func convertPointFromView(point: CGPoint) -> CGPoint func convertPointToView(point: CGPoint) -> CGPoint var view: SKView! { get } func update(currentTime: NSTimeInterval) func didEvaluateActions() func didSimulatePhysics() func didApplyConstriants() func didFinishUpdate() func didMoveToView(view: SKView!) // 函数在Scene被present到SKView后立即执行,我们可以在这里对Scene做一些初始化 func willMoveFromView(view: SKView!) func didChangeSize(oldSize: CGSize) }
重写了touchesBegan:withEvent函数,即点击屏幕便开始按SKAction序列播放动画模仿地面移动效果。
SKAction提供给我们一个animateWithTextures函数,我们可以很轻松地实现Sprite的一个动作动画。
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let moveGroundSprite = SKAction.moveByX(-groundTexture.size().width * 2.0, y: 0, duration: NSTimeInterval(0.02 * groundTexture.size().width * 2.0))
let resetGroundSprite = SKAction.moveByX(groundTexture.size().width * 2.0, y: 0, duration: 0.0)
let moveGroundSpritesForever = SKAction.repeatActionForever(SKAction.sequence([moveGroundSprite,resetGroundSprite]))
}
可以直接使用图片名称为Sprite添加texture,也可以创建一个SKTexture,然后将创建好的texture添加给Sprite。区别在于,渲染图片是否在创建SKSpriteNode前还是当时。
SKTexture类,也是一个很重要的类,我们用它来创建Sprite所需要的texture,可以直接用图片名称创建texture,创建后的texture可以重复使用,Sprite的动画执行可以通过一系列的texture切换来实现,这里再强调一下preLoad,这对整个程序的效率有很大的提高作用,作为开发者,我们肯定知道我们时候需要用到哪些Sprite,在这之前我们就可以先完成这些图片的渲染,当我们需要的时候可以直接拿来用,这可以帮我们省去部分时间,让程序更加顺畅。不再使用的texture会被内存释放掉。
另外,当我们有很多texture的时候, 我们可以把所有的texture拼接成一个texture Atlas,cocos2d中,可以利用texturePacker制作Atlas,并生成plist文件,在Sprite Kit中也可以根据Atlas图片和plist文件,Sprite Kit自动渲染Atlas里面的所有texture,然后我们根据对应的名字取得texture使用,而且可以重复使用,这对内存优化也起到很大作用。
Sprite Kit的物理场Physics Field一共有十个:
self.physicsWorld.gravity = CGVectorMake( 0.0, -5.0 ) self.physicsWorld.contactDelegate = self
pipeUp.physicsBody = SKPhysicsBody(rectangleOfSize: pipeUp.size) pipeUp.physicsBody.dynamic = false pipeUp.physicsBody.categoryBitMask = pipeCategory pipeUp.physicsBody.contactTestBitMask = birdCategory
pipeUp.physicsBody.collisionBitMask = worldCategory | pipeCategory
iOS 8 新给我们带来了什么,布布扣,bubuko.com
标签:style blog http color 使用 os
原文地址:http://www.cnblogs.com/updateofsimon/p/3836941.html