iOS10 UI教程子视图和父视图UI层次结构和Views继承

iOS10 UI教程子视图和父视图UI层次结构和Views继承

iOS10 UI教程子视图和父视图UI层次结构和Views继承,本节将讲解与UI层次结构和Views继承相关的内容,其中包括子视图和父视图、管理层次结构、视图和子视图的可见性、层次结构的事件等内容。

子视图和父视图

每一个UIView(或者是子类)的实例都可以与其它的视图使用父-子关系的方式进行连接。其中父视图被称为superview(超视图),孩子视图被称为subviews(子视图)。一个视图可以有且仅有一个父视图,但是可以有多个子视图,如图所1.12示。

 

图1.12  父视图和子视图

对于父视图的访问开发者可以使用superview属性,其语法形式如下:

var superview: UIView? { get }

对应子子视图的访问可以使用subviews属性,其语法形式如下:

var subviews: [UIView] { get }

【示例1-6:SuperViewAndSubView】以下将通过superview属性和subviews属性对空白视图的背景颜色进行设置。具体的操作步骤如下:

(1)打开Main.storyboard文件,从视图库中拖动View空白视图到View Controller的主视图中,将此空白视图的位置和大小调整为(16, 107, 343, 423)。为此视图声明和关联插座变量view1。

(2)从视图库中拖到第二个View空白视图到View Controller的主视图中,并将此视图放置在view1视图中,将此视图的位置和大小调整为(51, 147, 240, 128)。为此视图声明和关联插座变量view2。

(3)打开ViewController.swift文件,编写代码,为视图改变背景颜色。代码如下:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var view1: UIView!

    @IBOutlet weak var view2: UIView!

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        let parentView=view2.superview                                                              //获取view2的父视图

        let children=view1.subviews                                                                      //获取view1的子视图

        parentView?.backgroundColor=UIColor.red

        children[0].backgroundColor=UIColor.yellow

    }

……

}

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

 

图1.13  运行效果                                   图1.14  索引

相关阅读:iOS10 UI教程视图的中心位置

时间: 2024-10-18 15:48:16

iOS10 UI教程子视图和父视图UI层次结构和Views继承的相关文章

iOS一行代码将所有子视图从父视图上移除

原文链接: iOS一行代码将所有子视图从父视图上移除 简书主页:http://www.jianshu.com/users/37f2920f6848 Github主页:https://github.com/MajorLMJ iOS开发者公会-技术1群 QQ群号:87440292 iOS开发者公会-技术2群 QQ群号:232702419 iOS开发者公会-议事区   QQ群号:413102158

IOS子视图超过父视图frame后,无法交互响应

确定第一响应者 当用户触发某一事件(触摸事件或运动事件)后,UIKit会创建一个事件对象(UIEvent),该对象包含一些处理事件所需要的信息.然后事件对象被放到一个事件队列中.这些事件按照先进先出的顺序来处理.当处理事件时,程序的UIApplication对象会从队列头部取出一个事件对象,将其分发出去.通常首先是将事件分发给程序的主window对象,对于触摸事件来讲,window对象会首先尝试将事件分发给触摸事件发生的那个视图上.这一视图通常被称为hit-test视图,而查找这一视图的过程就叫

iOS 子视图响应父视图的点击事件

最近为了解决 点击子视图却依然会响应父试图的点击事件发现UITapGestureRecognizer上的一个代理方法: -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 如果返回no则不响应,因此我们可以根据isDescendantOfView:方法来判定一个视图是否在其父视图的视图层中.把我们不想让其响应的子视图拿出来判断一下,如果包含这个子

IOS 子视图获取父视图的控制器

UIResponder* nextResponder = [self.view.superview.superview nextResponder]; if ([nextResponder isKindOfClass:[UIViewController class]]) { uic = (UIViewController*)nextResponder; uic.hidesBottomBarWhenPushed = YES; [uic.navigationController pushViewCo

模态视图和父视图之间转换的方法

1.模态视图的静态工厂方法调用: + (void)dismiss { UIWindow *window; window = [UIApplication sharedApplication].keyWindow; if([window.rootViewController isKindOfClass:[ASDepthModalViewController class]]) { ASDepthModalViewController *controller; controller = (ASDept

父视图与子视图

1,子视图在父视图上显示及响应触摸时间, 1,子视图的frame需与父视图关连 2,在父视图必须声明[self.subView superview]; - (UIImageView *)imageTom {     if (_imageTom == nil) {         UIImageView *imageTom = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];         _imageTom = im

iOS10 UI教程视图和子视图的可见性

iOS10 UI教程视图和子视图的可见性 iOS10 UI教程视图和子视图的可见性,一个父视图可以通过clipsToBounds属性,定义子视图在边界(边界就是父视图的框架也就是父视图可以显示的范围)以外部分的可见性.其语法形式如下: var clipsToBounds: Bool { get set } 其中,将此属性设置为true,视图将掩盖它的子视图,防止这些子视图被显示在边界之外,如图1.17所示.   图1.17  可见性 [示例1-8:clipsToBounds]以下将使用clips

iOS10 UI教程禁用视图与用户的交互

iOS10 UI教程禁用视图与用户的交互 在上文中我们提到了使用isHidden属性和alpha属性可以使视图与用户的交互被禁用,除此之外此功能还可以使用UIView的isUserInteractionEnabled属性实现,其语法形式如下: var isUserInteractionEnabled: Bool { get set } 此属性可以接收一个布尔值,当接收的布尔值为false时,视图与用户的交互就会被禁用. [示例1-2:isUserInteractionEnabled]以下将禁用文

iOS10 UI教程视图的几何形状

iOS10 UI教程视图的几何形状 视图属性中的一部分属性可以让定义的视图绘制在屏幕上.在讲解这些属性前,我们首先将讲解,定义视图的几何形状所涉及到的结构类型.这些结构类型如下: CGPoint:它表示一个二维坐标系中的点,由x和y两个属性进行定义. CGSize:它表示一个矩形的尺寸,由width和height两个进行定义. CGRect:它表示一个矩形的位置和大小,由origin和size两个属性进行定义. 注意:初始化这些结构类型所需要的代码非常简单,而且有很多功能都是通过Apple提供的