热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

iOS10UI教程基础窗口的内容与设置起始窗口iOS10UI教程基础窗口的内容与设置起始窗口,本章我们从iOS10开发中UI的基础知识开始讲解,其中包括了窗口、视图以及UI层次结构和Views的继
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文件,编写代码,实现起始窗口的设置。代码如下:

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.4所示的效果


图1.3  运行效果                            图1.4  运行效果

iOS10 UI教程基础窗口的内容与设置起始窗口
推荐阅读
  • vue使用
    关键词: ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
author-avatar
雪盈甜美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有