tvOS开发简介

介绍

在2015年9月的年度活动中,除了新的iPhone和iPad机型,苹果公司还宣布了他们期待已久的Apple TV机顶盒更新。 这款新型的第四代Apple TV包括功能强大的A8处理器,支持Siri的遥控器,经过改进的用户界面,最重要的是,它还为第三方应用程序和游戏提供了全新的平台,Apple已将其命名为tvOS。

在本教程中,我将通过创建一个基本的tvOS应用程序向您介绍tvOS开发。 本教程要求您正在运行Xcode 7.1或更高版本,其中包括对tvOS的支持。 我还假设您已经熟悉iOS开发。

1.项目设置

打开Xcode并创建一个新项目。 您会立即注意到,模板列表包括tvOS应用程序的一部分。 从可用模板中,选择tvOS>应用程序> Single View Application

项目模板

单击下一步,然后如下所示配置项目。 我选择了Swift作为该项目的语言,但是您也可以使用Objective-C开发tvOS应用程序。

项目设定

要完成项目的设置,请告诉Xcode您要将项目保存到何处。 您会注意到的第一件事是,该项目的结构几乎与常规iOS应用程序相同。 在下面的屏幕截图中,您可以看到我们有AppDelegate.swiftViewController.swiftMain.storyboard

tvOS应用程序结构

2.构建界面

使用tvOS时,您会注意到的第一个主要区别是构建应用程序的用户界面。 打开Main.storyboard时 ,您将看到一个大的空白Apple TV屏幕。 如果在编辑器中看不到整个屏幕,请按Command--进行缩小。

空白的Apple TV接口

由于tvOS应用程序的缩放方式,该屏幕明显更大。 在现代iOS开发中,界面布局是通过使用点而不是像素来处理的,以使在配备Retina显示屏的设备上的开发更加轻松。

例如,iPhone 6和iPhone 6s的屏幕分辨率为1334x750,但仅屏幕尺寸(以磅为单位)为667x375。 这意味着设备上的所有应用程序都以2倍的比例运行。 具有Retina显示屏的所有Apple iOS设备均以2倍的比例运行,但iPhone 6 Plus和iPhone 6s Plus却以3倍的比例运行。

但是,新的Apple TV以1x比例运行标准1920x1080分辨率的应用程序。 这意味着,在构建tvOS应用程序时,构建界面时必须使用的屏幕大小(以磅为单位)也是1920x1080。

既然您知道了如何缩放tvOS应用程序并在屏幕上显示,我们就可以开始构建第一个界面了。 从在B utton你黑屏的右侧右边的对象库 ,拖累。 选中按钮后,在情节提要编辑器的底部,单击“ 固定”按钮并添加以下约束。

销钉按钮
按钮约束

接下来,将一个表视图拖到该按钮的左侧,并添加以下约束。 还要确保将底部的“ 更新框架”选项设置为“容器中的所有框架” 。 请看下面的屏幕截图以进行澄清。

表格视图约束

选择表格视图,打开Size Inspector ,然后将Row Height属性设置为88 ,如下所示。

行高

接下来,从对象库中拖动一个表视图单元格并将其添加到表视图中。 选中表格视图单元格后,打开“ 属性”检查器,然后将“ 样式”属性更改为“ 字幕”

单元格样式

最后, 按键盘上的Control并将其从表视图拖动到视图控制器,以将视图控制器设置为表视图的数据源和委托。 您也可以使用右侧的“ 连接”检查器执行此操作。

数据源和委托

通过构建此tvOS界面,您将看到它与构建iOS界面几乎相同,主要区别在于项目的规模明显更大。

3.了解重点

现在让我们关注一些代码。 打开ViewController.swift并将ViewController类的实现替换为以下内容。

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    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.
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 3
    }
    
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = UITableViewCell(style: .Subtitle, reuseIdentifier: nil)
        
        cell.textLabel?.text = "Item \(indexPath.row + 1)"
        cell.detailTextLabel?.text = "Subtitle \(indexPath.row + 1)"
        
        return cell
    }
}

如果您熟悉iOS开发,那么上面的实现应该看起来非常熟悉。 现在您可以运行第一个tvOS应用程序了。 按Command-R或单击左上角的运行按钮。 确保您的测试设备设置为Apple TV 1080p

目标设备

Apple TV Simulator启动并启动应用程序后,您应该看到以下屏幕:

tvOS应用

恭喜你! 现在,您已经启动并运行了第一个tvOS应用程序。 为了控制该应用程序,您需要使用新的Apple TV遥控器。 要在模拟器中调出遥控器,请从菜单中选择“ 硬件”>“显示Apple TV遥控器 ”或按⌘Command+ Shift + R。

显示Apple TV遥控器

一个小的远程窗口应在您的模拟器窗口旁边打开。 按住键盘上的“ 选项”按钮,然后将鼠标光标移到遥控器上,以使用遥控器。 您会看到,上下移动鼠标光标时,表视图中的选择会更改。

已选择表格项目

同样,当您向右滑动时,右侧的按钮也会被选中。

按钮已选择

在tvOS开发中,这称为更改当前焦点项目。 与iOS应用程序不同,tvOS应用程序使用点击式交互方式,在iOS应用程序中用户可以在任意给定时间点按屏幕上的任意位置。

您无需以开发人员身份进行任何额外工作即可使您的界面元素按逻辑顺序集中。 tvOS上的UIKit框架中内置的焦点引擎查看界面的布局,并处理将焦点从一个项目移动到另一个项目的所有工作。

但是,您可以使用许多新方法和属性来以编程方式控制在应用程序中处理焦点的方式。 其中许多是由UIFocusEnvironment协议定义的, UIViewControllerUIViewUIWindowUIPresentationController类自动符合该协议。 UITableViewDelegateUICollectionViewDelegate协议的tvOS版本中还包含多种方法,可用于控制应用程序内的焦点。

例如,我们将使右侧的按钮成为默认焦点项目。 如果立即运行该应用程序,您将看到表格的第一项最初处于焦点。 我们还将禁用表格视图中的第二项,使其无法聚焦。 将以下代码片段添加到ViewController类的实现中:

override var preferredFocusedView: UIView? {
    return self.view.subviews[0]
}

func tableView(tableView: UITableView, canFocusRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    if indexPath.row == 1 {
        return false
    }
    
    return true
}

我们首先覆盖preferredFocusedView属性,然后返回第一个子视图,该子视图当前是右侧的按钮。 preferredFocusedView属性是只读的,只能像我们所做的那样通过覆盖其实现来设置。 加载视图控制器后,焦点引擎将找到此属性返回的视图,并自动将其置于焦点。

我们还实现了tableView(_:canFocusRowAtIndexPath:)方法,并在indexPath.row等于1时返回false 。 否则,我们返回true 。 如您所料,此委托方法确定特定行是否可以成为焦点。

再次构建并运行应用程序时,您会看到右侧的按钮在启动时自动获得焦点。 如果右侧的按钮没有自动获得焦点,则您的应用程序的视图层次结构可能会略有不同,即,视图控制器视图的第一个子视图与右侧的按钮不相等。

您还将注意到,当您尝试浏览表视图的行时,中间的行会按照tableView(_:canFocusRowAtIndexPath:)方法的实现而被跳过。

4. tvOS App组件和限制

尽管我们不会在本教程中创建任何映像,但重要的是要了解tvOS应用程序所需的不同组件以及一些限制。

应用程式图示

每个tvOS应用程序必须提供两个应用程序图标:

  • 大: 1280px x 768px
  • 小: 400像素x 240像素

与iOS的主要区别在于tvOS应用程序图标最多可以由三层组成。 这样一来,就可以在主屏幕以及其他任何出现您的应用程序图标的地方实现视差效果。 如果您想亲自体验这种效果,请转到Apple TV Simulator,按遥控器上的“ 主页”按钮(小电视图标)。 聚焦“ 设置”应用程序图标并按住Option键,同时在遥控器上一点移动鼠标光标。 您将看到该应用程序图标响应您的移动,并且图标的不同层产生了不错的效果。

启动影像

就像常规的iOS应用程序一样,您必须提供一个静态图像才能在您的应用程序打开并加载后显示。 主要区别在于您只需要提供一个1920px x 1080px的图像。

上架图片

如果您的应用程序已被用户放置在顶层架子上 ,则在聚焦时,您可以在Apple TV的主屏幕上直接显示内容。 您可以显示三种主要的内容类型:

  • 静态图片:这只是您在应用程序捆绑包中提供的1920px x 720px的图片。
  • 动态内容布局:在此处,您可以在类似于集合视图的界面中显示一系列图像。 您可以随时通过应用选择这些图像,而不必将它们包含在应用程序包中。 您可以使用的三种图像尺寸分别为404px x 608px,608px x 608px和908px x 512px。 可以使用这三种尺寸的任何组合。
  • 滚动横幅:在此处,您可以提供一组宽高比图像,彼此相邻显示,其中一个占据了屏幕的大部分。 此内容类型类似于iOS App Store的主页。 这些图片的大小必须为1940px x 624px。

局限性

尽管新的Apple TV的存储容量比大多数iPhone设备(最低32GB)要多,但tvOS应用程序仍存在一些重要限制。 首先,应用程序的大小不能超过200MB。 您需要使用iOS 9和现在的tvOS随附的按需资源API下载此200MB缓冲区之外所需的任何内容。

您还需要注意的另一件事是tvOS应用程序没有持久性本地存储。 这意味着在应用程序启动之间需要保留的所有数据,例如游戏保存,照片和视频,都需要存储在iCloud中,并在需要时进行检索。

结论

尽管我们在本教程中没有编写太多代码,但我希望它能很好地介绍tvOS平台。 现在,您知道为iOS和tvOS开发应用程序之间的主要异同以及对开发人员的限制。

在以后的教程中,我们将更深入地研究tvOS,并发现tvOS和新的Apple TV可以实现的目标。

与往常一样,在下面的评论中留下您的评论和反馈。

翻译自: https://code.tutsplus.com/tutorials/an-introduction-to-tvos-development--cms-24848

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值