必赢亚洲手机app下载


支出你的首先个

PS板绘教程

支付你的率先个苹果电脑

原文链接=http://www.appcoda.com/tvos-introduction/
作者=gregg mojica
初稿日期=2015/11/02
译者=pmst
校对=numbbbbb
定稿=numbbbbb

上月在斯德哥尔摩设立的苹果发表会中,苹果公司宣告了第四代苹果电视。然则,此次立异不同于以往其他版本,苹果新电视将允许用户从
App Store 下载应用和游戏。

如此的表明的确给开发者打了一剂鸡血。新苹果电视中,位于
Cupertino(译者注:苹果电脑的全世界总公司所在地,位于U.S.特拉维夫)的壮汉介绍了一个新的操作系统,有别于
iOS 系统,新系统名为 tvOS。tvOS 基于 iOS 开发,有些许改动。
我们将利用通用框架和你最喜爱编程语言(当然是 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)(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)(Swift)中一贯是一个热议话题。近期有充分多采的 JSON 解析库,诸如
斯维夫特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
语句不太了然,这是 斯维夫特(Swift) 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,默认会自动聚焦。你可以在谷歌中找到一些聚焦API

正如教程起始所波及的,苹果匡助 client-server 应用。这些使用使用
电视机ML、电视JS 以及 电视机ML基特(Kit),它们的底子是当时最为盛行的 web
技术(HTML、JavaScript 等)。

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

显著,tvOS 应用中有太多限制标准,我们需要多加小心。

总结

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

这里提供了一体化的品种文件。

在项目一中,我们贯彻了一个 hello,world
应用程序;随后项目二中落实了简短的猜谜游戏使用,向你显得聚焦引擎;项目三详尽介绍了在
tvOS 中咋样行使
tableView;最终,大家构成已有知识在类型四中构建了一个简约的天气应用程序,可以从互联网上下载天气数据。

苹果的 tvOS 应用公司于这周出产,授权世界各地的开发者分享他们的小说。

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

相关文章

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