必赢亚洲手机app下载


平台上的上流迅速软件

支付你的率先个苹果电脑

支出你的首先个

作者:gregg
mojica,原稿链接,原文日期:2015-11-02
译者:pmst;校对:numbbbbb;定稿:numbbbbb

上月在卢森堡市办起的苹果发布会中,苹果集团宣布了第四代苹果电视机。可是,此次更新不同于以往其他版本,苹果新电视机将同意用户从
App Store 下载使用和玩耍。

这么的扬言的确给开发者打了一剂鸡血。新苹果电视中,位于
Cupertino(译者注:苹果电脑的天下总集团所在地,位于美利坚联邦合众国卢森堡市)的巨人介绍了一个新的操作系统,有别于
iOS 系统,新体系名为 tvOS。tvOS 基于 iOS 开发,有半点改动。
大家将运用通用框架和您最欢喜编程语言(当然是 Swift(Swift)喽,毫无疑问!)来编排多少个大概利用,开头询问 tvOS。

image

了解 tvOS

tvOS 基于 iOS 系统开发而成。你利用的广大框架可能都适用于
tvOS。但是,苹果删除了多少个 iOS 框架,使得 tvOS 独一无二 (最显赫的就是
Web基特(Kit))。

苹果补助两种档次的 tvOS
应用程序。第一个是价值观的应用程序-这类应用程序会卷入代码和图表等等资源。这差不多与
iOS 或 OS X 应用程序一样。tvOS
新增对client-server(客户端-服务器)行使的支撑,即第两序列型。client-server应用程序简单地把服务器请求和网络支出过程集中到应用中来。换句话说,这个应用可以同周边的数据库,服务器等竞相。例如,假若你使用
Node.js(一款基于 Chrome V8 引擎开发的 JavaScript
框架)实现了后端,接着你可以设想选拔client-server技巧,使它更便于管理应用程序(即我们的客户端)和后端(又称作服务器)。client-server应用程序可以一向与
JavaScript
举办互相。然则,由于那么些应用程序相比较特别,在本教程中我们将不探究client-server应用程序,重点介绍传统应用的支出。

请将这多少个概念牢记于心,起始我们的教程!

必备条件

在本教程中,我假如你曾经精晓科普的 iOS 框架、术语和网络知识。
我将在全路课程中采取 storyboard 举办教学,希望你知道什么运用
storyboard。同样,我不会对 storyboard
中有些广大的操作做详细深刻地执教(例如改变背景颜色,修改对象尺寸等等)。如若您对
storyboard 还不太通晓仍旧还只是个 iOS 的初学者,我提出您去 AppCoda
教程网站先读书下,再回过头来学习本学科。

支出条件为 Xcode7.1
以上。当然最好依旧在苹果电视机真机上开展调节(译者表示呵呵),当然模拟器也丰硕了。

创制一个新的 tvOS 工程

为了开发 tvOS 应用,你必须在你的 Mac 上设置 Xcode7.1。Xcode7.1 内置了
tvOS SDK,除此之外还有 iOS9.1 以及 斯维夫特(Swift)2.1。

起初 Xcode,创设一个新工程,选中一个新的 tvOS 应用。在右侧面板,选中击
Single View Application 并点击 next。

image2

紧接着为新利用命名。对于第一个应用来说,我们习惯以一个 Hello World App
作为教程的始发。命名该工程为
HelloWorld,接着点击创造并采纳项目存储地点。

Hello, tvOS

出于 tvOS 继承自 iOS,许多您熟习的 iOS 开发基本概念在 tvOS 中都适用。

在您的 Main.storyboard 文件中,添加一个 button,将 title 修改为“Click
Me!”,接着在其下方添加一个标签 label,如下所示:

image3

留神到 tvOS 中的按钮与 iOS
的按钮稍有例外。此外,当您添加多少个按钮时,苹果已经允许用户在按钮间无缝切换,比如向右,向左,向上或向下滑动。开发者只需要在
storyboard 中为按钮布局来利用该特性(稍后详述)。

和 iOS 一样,我们通过 control-drag 标签(label)和按钮(button)来创造IBOutlet 以及 IBAction。这里分别命名 outlet 为 myLabel,IBAction 为
buttonPressed。

在 buttonPressed 动作中,请键入如下代码行:

self.myLabel.text = "Hello,World"

您应当很熟练这行代码了。倘诺你不熟识,上述代码实现了点击按钮,为标签(label)的
text 字段赋值”Hello,World”字符串值。

请在模拟器中运作应用。

您恐怕想要通过鼠标来点击按钮,但与模拟器中的 iOS
应用不同,苹果电视机未配备触摸屏,仅仅凭借一个遥控器罢了。因而,单击Hardware
>Show Apple 电视机 Remote 或者 Command + Shift + R
快速键显示遥控器。通过遥控器实现按钮的点击,你的第一个 tvOS
应用就此形成了!

猜谜游戏 App

接下去,我们将使用现有的 tvOS
知识开发一款简单的猜谜应用。这将是一个不行基本的猜谜应用(唯有一个问题),这一个迷你项目紧假设像你呈现按钮和遥控器之间是哪些互相的。在接下去的花色中,我们将追究更多关于决定
tvOS 的知识。

苹果电脑,再也启航 Xcode,依葫芦画瓢成立一个新的 tvOS
项目。不过请重新命名项目名称。

效仿我下边的布局做一些 storyboard 的底蕴操作。

只要你不确定自身是什么样兑现的,下面是本人使用的组件的列表:

  1. 4 个 UIButton,尺寸为 960 X 325
  2. 1 个 UILabel,尺寸为 1400 X 120

继而为 4 个按钮添加 text 并改变它们的背景颜色,均在 storyboard 完成(任何
iOS 应用都得以这么实现)。

像从前一样,让我们将那个按钮绑定到代码中。为了代码简洁和容易了然,我将创设4 个 IBAction(即便这并不一定是最优雅的缓解方案,但它是最简便的)。

将这些按钮逐一连接到 ViewController.swift 文件中(通过拖拉措施创立IBAction),暂且命名为 :button0Tapped、button1Tapped、button2Tapped 和
button3Tapped,你可以天天修改这个名称。

地方图片中突显的 label
内容是精晓加州的省会是哪位。给出多个采纳供您采用(有关加州京城的学问),答案是
Sacramento。其中 button1Pressed 动作响应 Sacramento 按钮的点击事件。

据悉点击的按钮,大家想向用户体现一个警告音讯,告知他们挑选了无可非议仍然错误的按钮。接着我们创设一个名为
showAlert 的函数来拍卖这件事,让我们的代码 DRY(DRY 是 Don’t Repeat
YourSelf
的缩写,对于软件工程师来说这是常规用法,确保代码可重用性和可维护性)。

func showAlert(status: String, title:String) { // 1
        let alertController = UIAlertController(title: status, message: title, preferredStyle: .Alert) // 2
        let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { (action) in //3 
        }
        alertController.addAction(cancelAction)

        let ok = UIAlertAction(title: "OK", style: .Default) { (action) in
        } // 4
        alertController.addAction(ok)

        self.presentViewController(alertController, animated: true) { // 5
        }
    }

上述函数接受六个参数,一个是用户的输入状态(表面他们回答问题的正确或者失实),以及警告提醒框中要来得的信息仍旧标题。

第二行创设并起头化一个新的 UIAlertController 对象。第三和第四行代码为
alert 警告框添加一个 cancel 废除按钮和 ok
确认按钮,第五行代码用于突显那些情节。

只要您不确定这段代码是何许行事的,我强烈提议你先看看UIAlertController课程,这里提供了关于该类的详细音讯。

现在,请在不同的 IBActions 中调用那些主意。

@IBAction func button0Tapped(sender: AnyObject) {
        showAlert("Wrong!", title: "Bummer, you got it wrong!")
}
// 这是唯一正确的
@IBAction func button1Tapped(sender: AnyObject) {
    showAlert("Correct!", title: "Whoo! That is the correct response")
}
@IBAction func button2Tapped(sender: AnyObject) {
    showAlert("Wrong!", title: "Bummer, you got it wrong!")
}
@IBAction func button3Tapped(sender: AnyObject) {
    showAlert("Wrong!", title: "Bummer, you got it wrong!")
}

正如您所观察的,仅在 button1Tapped
函数中传唱“Correct”的标题,剩下都流传“Wrong”。

你的代码应该看起来和下边的代码一样。

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func button0Tapped(sender: AnyObject) {
        showAlert("Wrong!", title: "Bummer, you got it wrong!")
    }
    @IBAction func button1Tapped(sender: AnyObject) {
        showAlert("Correct!", title: "Whoo! That is the correct response")
    }
    @IBAction func button2Tapped(sender: AnyObject) {
        showAlert("Wrong!", title: "Bummer, you got it wrong!")
    }
    @IBAction func button3Tapped(sender: AnyObject) {
        showAlert("Wrong!", title: "Bummer, you got it wrong!")
    }

    func showAlert(status: String, title:String) {
        let alertController = UIAlertController(title: status, message: title, preferredStyle: .Alert)

        let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { (action) in

        }
        alertController.addAction(cancelAction)

        let ok = UIAlertAction(title: "OK", style: .Default) { (action) in
        }
        alertController.addAction(ok)

        self.presentViewController(alertController, animated: true) {
        }
    }
}

在模拟器中运作你的运用。假若一切顺利,你应当会看出类似上面的截图。

单机遥控器,选中 Cupertino 选项

您应当看到弹出一个 UIAlertController。

不幸的是,模拟器并不协助 swiping,由此你或许需要在真机中测试成功的 alert
警告框。但是,你可以在模拟器(遥控)中经过按住 option 键 swipe 选项。在
Apple 电视 真机中,你可知在享有按钮中无缝切换。

恭贺! 你早就做到了第二个门类。

在 tvOS 中使用 TableViews

在 iOS 操作系统中,苹果大量使用
tableview。事实上,苹果在广大自己应用(包括音讯、联系人等)都采用了它。随着
watchOS SDK 的发布,tableview 可用于 Apple 沃特ch
开发。自然地,新的苹果电视机和 tvOS 同样支撑这多少个流行的 API。

抄袭创设一个新的工程项目,命名为 TableViewPractice。

和原先开创的工程一律,Xcode 默认自动生成 ViewController.swift
文件。请在文件的第 11 行代码处添加如下宣示(译者注:就是让 ViewController
遵从四个 tableView 的商议):

UITableViewDataSource, UITableViewDelegate

第 11 行的代码应该看起来如此:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

由于 斯威夫特(Swift) 是一门注重安全的言语,编译器会报告说没有坚守 UITableView 的
Datasource 和 Delegate 协议。我们会神速缓解这个问题。

紧接着在 storyboard 中添加一个 tableView 视图并拖拽到 ViewController
文件中生成一个 IBOutlet,将其取名为 tableView。同时在这多少个 IBOutlet
讲明下方新增一个数组。

var dataArray = ["San Francisco", "San Diego", "Los Angeles", "San Jose", "Mountain View", "Sacramento"]

数组囊括了拥有大家要在 tableView 彰显的要素。

当今请在v iewDidLoad 方法的下方添加如下代码:

// section数量
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}
// 每个section的cell数量    
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.dataArray.count
}
// 填充每个cell的内容    
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = UITableViewCell(style: .Subtitle, reuseIdentifier: nil)

    cell.textLabel?.text = "\(self.dataArray[indexPath.row])"
    cell.detailTextLabel?.text = "Hello from sub title \(indexPath.row + 1)"

    return cell
}

你也许发现了,tvOS 中的 tableview 和 iOS 中的 tableView
非常相像。在上头的代码片段中,我们报告 tableview
有些许行(rows),多少个部分(section),以及各种单元格要呈现的情节。

在 viewDidLoad 方法中,确保您把 tableview 的 delegate 和 datasource
设置为自家 self。

self.tableView.dataSource = self
self.tableView.delegate = self

在模拟器中运行应用。

不出意外,你应当看到一个 tableview 出现在界面中。

近期,我们将在 tableView
的右手添加一个按钮(UIButton)。在模仿或者真机上构建并运行,Whoo
!我们现在可以在按钮和 tableview 之间无缝切换了。

开创一个气象 App

在下一个小品种中,我们将支付一个简练的气象应用程序,展现当前的天气预报。在那一个序列中,我们将应用特别平静的天气
API:forecast.io,它为包括 Dark Sky 在内许多 iOS 应用提供 API 扶助。

先是你需要在 developer.forecast.io
注册一个开发者账号。我们只是测试,免费的 API 调用(1000
次/天)应该丰富使用了。

小心下面 url:
https://api.forecast.io/forecast/d3250bf407f0579c8355cd39cdd4f9e1/37.7833,122.4167

forecast/事后的一串数字(即 d3250bf40…)是 API Key
键值(千万不要将品种的 API Key 显露给别人);紧跟着 API Key
字符串后的是您想要解析天气数据地方的经度和纬度坐标。我采纳 San
Francisco,可是你可以因此简单修改经纬坐标值来显示此外地点的气象。

比方在浏览器中开拓该链接,你将注意到上报数据为 JSON 格式。这是一个
Get请求。在 HTTP 世界中,GET 用于获取和下载数据。

为了知道数据并将其出示到利用中,大家需要分析它。解析 JSON 在 Swift中直接是一个热议话题。目前有多种多样的 JSON 解析库,诸如
斯威夫特(Swift)yJSON、Alamofire
等。它们都是很棒的资源,我强烈提议你先看看。不过,在本教程中我们将利用
NSJSONSerialization,一个 iOS 内置的类。首先,打开 ViewController.swift
文件。didRecieveMemory告诫函数在本项目中并未存在的含义,所以删除它吗!

今昔,在 ViewDidLoad 中键入如下代码:

if let url = NSURL(string: "https://api.forecast.io/forecast/d3250bf407f0579c8355cd39cdd4f9e1/37.7833,122.4167") { }

那边我们采取可选类型讲明一个 url 变量。

NSJSONSerialization 需要传入 NSData 举办剖析。

if let data = NSData(contentsOfURL: url){ }

随着,在地点 data 花括号效率域中键入如下代码:

do {
      let parsed = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) // 1

     let newDict = parsed as? NSDictionary // 2
     print(newDict!["currently"]!["summary"])
   }
catch let error as NSError {
     print("A JSON parsing error occurred, here are the details:\n \(error)") // 3
}

咱俩把 NSJSONSerialization 对象包裹在 do-catch 语句中。你或许对 do
语句不太通晓,这是 斯维夫特 2 中的新特色。Do-Catch
语句是一个新的革新性错误处理机制。Do-Catch 语句的行使方法如下:

do {
    try expression // 不是必要的内容
    statements
} catch pattern 1 {
    statements
} catch pattern 2 where condition {
    statements
}

在第一行代码中,我们设定了一个 NSJSONSerialization 对象,并传播 data
对象。注意,对象(parsed)在行使从前务必先转换成一个 NSDictionary 字典。

接着,在第二行代码中,我们指定一个名为 newDict
的变量并利用as第一字将其转移 NSDictionary。

说到底,在第三行代码中,大家捕获任何错误并打印到顶点中。

您的全部 ViewController 文件应当接近于下边的代码。

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if let url = NSURL(string: "https://api.forecast.io/forecast/d3250bf407f0579c8355cd39cdd4f9e1/37.7833,122.4167") {
            if let data = NSData(contentsOfURL: url){
                do {
                    let parsed = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments)

                    let newDict = parsed as? NSDictionary
                    print(newDict!["currently"]!["summary"])
                }
                catch let error as NSError {
                    print("A JSON parsithng error occurred, here are the details:\n \(error)")
                }
            }
        }
    }
}

反省终端输出。你应有看到一个装进了值的可选类型(你得到的值应该稍有两样,会遵照不同的地理地方和气候来呈现)。

现在我们将部分 UILabel 链接到应用中。拖拽六个 UILabel,一个叫
currentTemp,另一个叫 currentSummary。仔细看下 forecast 的
API,你会注意到它回到当前气象温度以及气候的概貌(当然还有此外数据)。

在 newDict 变量下边放置如下代码:

self.currentTemp.text = "\(newDict!["currently"]!["temperature"]!!)"
self.currentSummary.text = "\(newDict!["currently"]!["summary"]!!)"

代码实现了拿到天气数据并科学呈现到界面。每一行语句最终都使用了再一次叹号符号(!!),用于强制解包
JSON 数据(否则它将被装进到 Optional 中)。

在模拟器中构建并运行。

干的不利!你早已完成了天气预报项目!

其他 tvOS 特性

咱们只但是接触了点 tvOS 的肤浅。正如你所知晓的,tvOS 建立在各类 iOS API
之上。但是,许多框架已经从 tvOS
中移除了。完整列表请看这篇文章

除却,tvOS
的基础是热点事件(按钮、单元格、标签等在当选状态时会展现出来,此时为聚焦状态)。幸运的是,系统活动处理大多数聚焦事件。只要您采用了
storyboard,默认会自动聚焦。你可以在Google中找到一些聚焦API

正如教程先导所涉及的,苹果辅助 client-server 应用。这多少个使用使用
电视机ML、电视JS 以及 电视ML基特(Kit),它们的功底是立即最好盛行的 web
技术(HTML、JavaScript 等)。

此时此刻需要考虑的最大挑衅是创造的 tvOS 应用中,SDK
并不援助数据持久化存储。这是和 iOS 不同,你不可以保存任何大小超越 1MB
的肖像、图标等情节。因而你不可能不安排一个后端服务,如
Cloud基特、Parse、iCloud 等。提出你先掌握下 tvOS
中对资源的急需(从前自己写的App
瘦包教程
)。此外,应用大小限制在
200MB 以内。

肯定,tvOS 应用中有太多限制条件,大家需要多加小心。

总结

在本教程中大家大体了解了 tvOS
以及它的各样特色。通过三个例子项目我们来看了 tvOS
的强硬之处,当然还有局限性。tvOS 与 iOS
共享许多相似之处,但有些iOS框架却一度被移除了。

这里提供了一体化的项目文件。

在项目一中,我们兑现了一个 hello,world
应用程序;随后项目二中贯彻了简短的猜谜游戏拔取,向您显得聚焦引擎;项目三详细介绍了在
tvOS 中什么运用
tableView;最终,我们结合已有文化在品种四中构建了一个简单易行的气候应用程序,能够从互联网上下载天气数据。

苹果的 tvOS 应用商店于前一周生产,授权世界各地的开发者分享他们的小说。

您将作为见证者,看到 tvOS 和新的苹果电视机永久性地改成 电视机 行业!

正文由 斯维夫特GG 翻译组翻译,已经得到作者翻译授权,最新篇章请访问
http://swift.gg

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图