iOS10 UI教程管理层次结构

iOS10 UI教程管理层次结构

iOS10 UI教程管理层次结构,在一个应用程序中,如果存在多个层次结构,就需要对这些层次结构进行管理。在UIView类中提供了可以用来管理层次结构的方法,让开发者可以添加、移动、删除来自层次结构中的元素。开发者可以在视图的实例上直接使用这些方法。以下将讲解3种管理层次结构的方法,分别为添加视图、插入视图以及移除视图。

1.添加视图

添加视图可以使用addSubview(_:)方法,此方法可以添加一个视图到子视图列表的末尾。被添加的视图被作为相同子视图的同级。同级子视图会被分配一个基于插入的顺序的索引,如图1.14所示。这个索引又对应于一个绘制顺序,索引值高的绘制在前,而索引值低的,绘制在前面同级视图的后面。其语法形式如下:

func addSubview(_ view: UIView)

其中,view用来指定要插入的视图。

2.插入视图

insertSubview(_:)方法添加的视图中可以显示在同级视图的前面。如果想要在任意同级视图的前后插入视图可以使用3个方法,分别为insertSubview(_:at:)方法、insertSubview(_:aboveSubview:)或者是insertSubview(_:belowSubview:)方法。

(1)insertSubview(_:at:)方法可以在指定的索引处插入视图,其语法形式如下:

func insertSubview(_ view: UIView, at index: Int)

其中,view用来表示插入的视图,index用来指定索引。

(2)insertSubview(_:aboveSubview:)方法可以在层次结构中插入一个视图,并且这个视图插入到指定视图的上面。其语法形式如下:

func insertSubview(_ view: UIView, aboveSubview siblingSubview: UIView)

其中,view用来表示插入的视图,siblingSubview用来指定视图。

(3)insertSubview(_:belowSubview:)方法也可以在层次结构中插入一个视图,并且这个视图插入到指定视图的下面。其语法形式如下:

func insertSubview(_ view: UIView, belowSubview siblingSubview: UIView)

其中,view用来表示插入的视图,siblingSubview用来指定视图。

【示例1-7:insertSubView】以下将使用insertSubview(_:at:)方法在界面中插入2个视图。具体的操作步骤如下:

(1)打开Main.storyboard文件,对主视图进行设计,效果如图1.15所示。

 

图1.15  主视图的效果

需要添加的视图以及对它们的设置如表1-1所示。 

表1-1  对视图对象的设置

 

(2)打开ViewController.swift文件,编写代码,在指定索引处插入视图。

import UIKitclass ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view, typically from a nib.//插入蓝色的空白视图let view1=UIView(frame:CGRect(x: 16, y: 76, width: 343, height: 272))view1.backgroundColor=UIColor.blueview.insertSubview(view1, at: 1)//插入红色的空白视图let view2=UIView(frame:CGRect(x: 16, y: 220, width: 343, height: 272))view2.backgroundColor=UIColor.redview.insertSubview(view2, at: 3)}……}

  

此时运行程序,会看到如图1.16所示的效果。

 

图1.16  运行效果

3.移除视图

当在应用程序中有不再使用的视图,就应当及时的从层次结构中移除,这样便于对层次结构的管理,此时使用到removeFromSuperview()方法。其语法形式如下:

func removeFromSuperview()

iOS10 UI教程管理层次结构

相关阅读:iOS10 UI教程子视图和父视图

转载于:https://www.cnblogs.com/daxueba-ITdaren/p/6100630.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

appium()-The event firing

原文地址:https://github.com/appium/java-client/blob/master/docs/The-event_firing.md since 4.1.0 The purpose This feature allows end user to organize the event logging on the client side. Also this feature may be useful in a binding with standard…

c# oracle datasource,C# 连接Oracle 数据库 示例源码下载

【实例简介】C# 实现 Oracle 数据库的 增删改查 操作【实例截图】【核心代码】using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using S…

前端学习(2169):vue-router安装和配置方式

main.js import VueRouter from vue-router import Vue from vue//安装插件 const routers new VueRouter({//配置之间的关系routes })export default router index.js import VueRouter from vue-router import Vue from vue//安装插件 const routers new VueRouter({//配…

如何在intellj Idea中给新建的项目添加jar包?

1. 假如我加入joda.jar 2. 找到发布的你想要的jar包,下载! 3. 解压刚下载的jar包,复制 4. 在intellj idea中新建一个java项目,然后创建一个专门用于放jar的lib文件夹, 然后添加ctrlv 黏贴刚复制的jar包, 然…

js声明php变量,vue.js怎样声明变量

vue.js声明变量的方法:1、使用let定义,let是块级作用域,函数内部使用let定义后,对函数外部无影响;2、使用var定义,var定义的变量可以修改;3、使用const定义,const定义的变量不可以修…

前端学习(2173):动态路由的跳转

app.vue <template><div id"app"><router-link to"/home">首页</router-link><router-link to"/about">关于</router-link><router-link v-bind:to"/user/userId">用户</router-link&g…

前端测试框架 jasmine 的使用

最近的项目在使用AngulaJs,对JS代码的测试问题就摆在了面前。通过对比我们选择了 Karma jasmine ,使用 Jasmine做单元测试 &#xff0c;Karma 自动化完成&#xff0c;当然了如果使用 Karma jasmine 前提是必须安装 Nodejs。 安装好 Nodejs &#xff0c;使用 npm 安装好必要…

(HDU)1019 --Least Common Multiple(最小公倍数)

描述 一组正整数的最小公倍数&#xff08;LCM&#xff09;是可以被集合中所有数字整除的最小正整数。 例如&#xff0c;5,7和15的LCM为105。输入 输入将包含多个问题实例。 输入的第一行将包含指明问题实例数量的单个整数。 每个实例将由形式为m n1 n2 n3 ... nm的单行组成&…

如何将exe文件在linux下执行,如何在Linux系统下查找可执行文件

可执行文件是指可移植可执行的文件&#xff0c;用于程序的执行&#xff0c;那么Linux下要如何查找可执行文件呢&#xff1f;下面小编就给大家介绍下Linux中查找可执行文件的方法&#xff0c;一起来了解下吧。linux下查找可执行文件ls -F|grep “*”这样就可以了&#xff01;ls …

前端学习(2176):vue-router的路由的嵌套使用

app.vue <template><div id"app"><router-link to"/home">首页</router-link><router-link to"/about">关于</router-link><router-link v-bind:to"/user/userId">用户</router-link&g…

前端学习(2177):vue-router得参数传递

app.vue <template><div id"app"><router-link to"/home">首页</router-link><router-link to"/about">关于</router-link><router-link v-bind:to"/user/userId">用户</router-link&g…

前端学习(2178):vue-router得参数传递二

app.vue <template><div id"app"><router-link to"/home">首页</router-link><router-link to"/about">关于</router-link><button click"userClick">用户</button><button clic…

linux系统登陆问题,Linux之登陆问题

今天早上在使用Linux的时候进入终端输入startx&#xff0c;然后退出图形界面&#xff0c;进入了命令模式&#xff0c;可能是Ubuntu 14.04的问题&#xff0c;不知怎么就没有响应&#xff0c;我就强行重启了一下操作系统&#xff0c;然后进去发现在使用管理员账号登录时一直是重复…

前端学习(2180):vue-router全局导航守卫

app.vue <template><div id"app"><router-link to"/home">首页</router-link><router-link to"/about">关于</router-link><button click"userClick">用户</button><button clic…