文档章节

iOS10 UI教程基础窗口的内容与设置起始窗口

大学霸
 大学霸
发布于 2016/11/21 15:23
字数 1155
阅读 31
收藏 0

iOS10 UI教程基础窗口的内容与设置起始窗口

iOS10 UI教程基础窗口的内容与设置起始窗口,本章我们从iOS10开发中UI的基础知识开始讲解,其中包括了窗口、视图以及UI层次结构和Views的继承等内容。一个成功的应用程序,除了高效可靠的代码外,优秀的用户界面设计和程序框架的科学布局也是十分重要的。如果开发者想要设计一个界面具有吸引力而且布局又十分科学的应用程序,那么就需要对用户界面的组成部分十分熟悉。

iOS10 UI窗口

视图层次结构中的最高层是窗口。窗口是UIWindow的一个实例,而UIWindow是一种特殊的UIView。它不绘制任何对象,可以被认为是一个空白容器。在一个应用程序中,有且只有一个窗口。窗口默认是充满整个屏幕的。本节将讲解窗口的内容、设置起始窗口以及窗口的工作方式。

 iOS10窗口的内容

应用程序的内容主要是由视图控制器控制,并通过视图在窗口中进行显示。也就是说,如果开发者想要在窗口中显示内容,就需要将内容发送到窗口。此时需要使用UIViewController实例的rootViewController属性,它会将视图控制器的视图自动设置为窗口的内容进行显示。图1.1所示的内容可以很好的说明视图控制器、窗口以及视图之间的合作过程。

图  视图控制器、窗口以及视图之间的合作

注意:在此图中视图控制器首先初始化并设置了窗口的根视图控制器。最后,窗口显示当前的根视图控制器的视图。

设置起始窗口

起始窗口就是应用程序在运行后,第一个显示的窗口,起始窗口也被称为主窗口。在应用程序中必须要有一个起始窗口。起始窗口很少需要开发者手动设置,一般会由Xcode默认定义。如果开发者想要自定义起始窗口,可以用以下两种方式:一种是使用Info.plist文件进行设置,另一种是使用代码进行设置。

1.Info.plist

当开发者使用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  运行效果

iOS10 UI教程基础窗口的内容与设置起始窗口

© 著作权归作者所有

大学霸
粉丝 269
博文 902
码字总数 556327
作品 0
东城
程序员
私信 提问
iOS10 UI教程基改变视图的外观与视图的可见性

iOS10 UI教程基改变视图的外观与视图的可见性 视图是应用程序的界面,是用户在屏幕上看到的对象。用户可以通过触摸视图上的对象与应用程序进行交互,所以视图界面的优劣会直接影响到了客户体...

大学霸
2016/11/22
9
0
iOS10 UI设计基础教程

iOS10 UI设计基础教程 介绍:本教程针对iOS初级开发人员,基于iOS 10系统,使用Swift 3.0语言讲解如何进行UI设计。本教程内容涵盖UI基础构成、UI元素、自动布局、自适应UI、UI动画、UI交互和...

大学霸
2016/11/10
9
0
iOS10 UI教程层次结构的事件

iOS10 UI教程层次结构的事件 iOS10 UI教程层次结构的事件,层次结构中存在7个事件,对于这些事件的介绍如表1-3所示。通过这些事件,可以监听视图,当视图在层次结构上发生变化时可以被拦截,...

大学霸
2016/11/25
7
0
iOS10 UI教程视图的边界与视图的框架

iOS10 UI教程视图的边界与视图的框架 iOS10 UI视图的边界 在视图的几何形状中我们提到了视图属性中的一部分属性可以将定义的视图绘制在屏幕上。其中典型的3个属性为边界属性、框架属性以及中...

大学霸
2016/11/23
20
0
iOS10 UI教程视图的中心位置

iOS10 UI教程视图的中心位置 center表示的是视图的中心位置属性,这个属性在相对的UI层次结构上工作,和frame类似。center属性是一个在父视图上定义视图的位置的简便方法。center属性和frame...

大学霸
2016/11/24
17
0

没有更多内容

加载失败,请刷新页面

加载更多

windows自带端口转发配置

windows系统有自带portproxy功能。目前只支持tcp协议的端口转发,前提需要作为portproxy的主机需要安装IPV6,安装可以不启用IPV6。 添加方法 假定需要通过192.168.1.8的14941端口连接192.168...

WUBAOQUAN
27分钟前
1
0
AI 文件怎么变线框了?

解决办法:ctrl+Y

柴高八斗之父
31分钟前
0
0
零基础学Python需要学会的五十道习题!全会了基础基本就过了!

小编总结了五十道适合Python初学者的练习题,非常适合练手,分享给大家! 题一、矩阵乘法 在开始之前先给大家点福利,小编准备了Python入门的系统教程等资料,私信小编发送我要资料就可以自动...

糖宝lsh
32分钟前
5
0
基础服务系列-Centos7 安装Node.js10

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. 简介 以官方centos镜像为基础,安装Node.js 10。 Unix prerequisites: gcc and g++ >= 6.3 or newer, or GNU ......

wuxinshui
今天
3
0
Canonical修复了内核安全更新引入的回归问题

导读 Canonical今天发布了所有支持Ubuntu操作系统版本的新Linux内核版本,以解决最新内核安全更新引入的回归问题。 上周,Canonical发布了所有支持Ubuntu版本的Linux内核更新,以解决Jonatha...

问题终结者
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部