iOS10 UI教程基础窗口的内容与设置起始窗口,本章咱们从iOS10开发中UI的基础知识开始讲解,其中包括了窗口、视图以及UI层次结构和Views的继承等内容。一个成功的应用程序,除了高效可靠的代码外,优秀的用户界面设计和程序框架的科学布局也是十分重要的。若是开发者想要设计一个界面具备吸引力并且布局又十分科学的应用程序,那么就须要对用户界面的组成部分十分熟悉。swift
视图层次结构中的最高层是窗口。窗口是UIWindow的一个实例,而UIWindow是一种特殊的UIView。它不绘制任何对象,能够被认为是一个空白容器。在一个应用程序中,有且只有一个窗口。窗口默认是充满整个屏幕的。本节将讲解窗口的内容、设置起始窗口以及窗口的工做方式。app
应用程序的内容主要是由视图控制器控制,并经过视图在窗口中进行显示。也就是说,若是开发者想要在窗口中显示内容,就须要将内容发送到窗口。此时须要使用UIViewController实例的rootViewController属性,它会将视图控制器的视图自动设置为窗口的内容进行显示。图1.1所示的内容能够很好的说明视图控制器、窗口以及视图之间的合做过程。框架
图 视图控制器、窗口以及视图之间的合做布局
注意:在此图中视图控制器首先初始化并设置了窗口的根视图控制器。最后,窗口显示当前的根视图控制器的视图。spa
起始窗口就是应用程序在运行后,第一个显示的窗口,起始窗口也被称为主窗口。在应用程序中必需要有一个起始窗口。起始窗口不多须要开发者手动设置,通常会由Xcode默认定义。若是开发者想要自定义起始窗口,能够用如下两种方式:一种是使用Info.plist文件进行设置,另外一种是使用代码进行设置。设计
1.Info.plistcode
当开发者使用Xcode的向导建立项目后,一个Storyboard(故事面板)也会被建立。若是开发者打开Info.plist文件,会看到Main Storyboard file base name关键字的值为默认的故事面板名称为Main,如图1.2所示。开发者能够修改此关键字的值对初始窗口进行自定义。对象
图1.2 Info.plist继承
2.代码设置教程
若是开发者将Info.plist文件中的Main storyboard file base name关键字移除,那么Xcode将没法根据这个信息去创建窗口,更别说是起始窗口了,若是运行程序,会看到如图1.3所示的效果。
对起始窗口的设置可使用UIWindow的rootViewController属性,此属性能够用来设置窗口的根视图,它会将视图控制器的视图自动的设置成起始窗口的内容,并呈现给用户。其语法形式以下:
var rootViewController: UIViewController? { get set }
【示例1-1:Hello】如下将使用rootViewController属性设置应用程序的起始窗口。具体的操做步骤以下:
(1)建立一个Single View Application模板类型的项目,命名为Hello。
(2)打开Main.storyboard文件,从视图库中拖动View Controller视图控制器到画布中,并将新的View Controller视图控制器的视图的背景设置为绿色。
(3)在Show the Identity inspector面板中,将View Controller视图控制器的Storyboard ID设置为viewController2。
(4)移除Info.plist文件中的Main storyboard file base name键。
(5)打开AppDelegate.swift文件,编写代码,实现起始窗口的设置。代码以下:
此时运行程序,会看到如图1.4所示的效果
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { window=UIWindow(frame:UIScreen.main.bounds) //实例化窗口 let storyboard=UIStoryboard(name: "Main", bundle: nil) let viewController=storyboard.instantiateViewController(withIdentifier: "viewController2") window?.rootViewController=viewController //设置起始窗口 window?.makeKeyAndVisible() //设置为主窗口并显示出来 return true } }
图1.3 运行效果 图1.4 运行效果