UIContainerView纯代码实现及原理介绍

1.1-在StoryBoard中使用UIContainerView

  • 1.在storyboard中搜索UIContainerview并拖入到控制器中,设置约束

  • 2.可以看到ContainerView自带一个segue连线的控制器,而这个Segue既不是Push跳转而不是Model跳转,而是Embed嵌入的形式

  • 3.运行,可以看到右侧控制器的视图通过UIContainerView嵌入到左侧的控制器中

1.2-纯代码使用UIContainerView

  • 1.创建一个控制器,设置背景颜色为绿色

  • 2.将Storyboard中的UIContainerView拖到代码时,会发现根本没有UIContainerview这个类,它的本质其实就是一个UIView

    • 本人推测:它本质上应该是一个未开放的UIView的一个Category分类

  • 3.纯代码实现UIContainerview


#import "ViewController.h" #import "SecondViewController.h" @interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *containerView; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; [self addContainerView];
// Do any additional setup after loading the view, typically from a nib.
} - (void)addContainerView
{
//1.创建containerView目标控制器
SecondViewController *second = [[SecondViewController alloc] init];
//设置背景颜色
second.view.backgroundColor = [UIColor greenColor];
//2.将目标控制器的视图赋值给容器视图(不能用addSubView,否则设置frame无效)
self.containerView = second.view;
//设置显示大小
self.containerView.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height-200);
//3.添加到当前视图
[self.view addSubview:self.containerView]; //4.获取到Containerview的目标控制器
NSLog(@"%@",self.containerView.nextResponder);
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end

1.3-UIContainerview特点及原理分析

  • UIContainView是iOS系统中非常特殊的一个控件,它的主要特点如下:

    • (1)只能在Storyboard中搜索到UIContainerview,代码中没有这个类

      • 应该是属于系统并未开放的UIView的分类
    • (2)是一个不能够被渲染的视图容器 
      • 不能被渲染,也就是说设置背景颜色backgroundColor和bounds属性等一些渲染属性是无效的
  • UIContainerview的原理

    • UIContainer通过强引用控制器的视图(赋值操作),再作为其他控制器的子视图,从而达到一个控制器中显示两个控制器视图的效果
 
0
转自:http://blog.csdn.net/u013263917/article/details/53487368

UIContainerView纯代码实现及原理介绍的更多相关文章

  1. Android 高逼格纯代码实现类似微信钱包带分割线的GridView

    前言    原文地址:http://blog.csdn.net/sk719887916/article/details/40348837: Tamic 通过上两篇关于自定view的文章,在自定义vie ...

  2. iOS-原生纯代码约束总结(二)之 AutoLayout

    一,概述 AutoLayout相比AutoResizing更加实用,是可以完全替代AutoResizing的一种自动布局方式.而在使用AutoLayout前,我们必须理解一个属性,那就是transla ...

  3. 03 Yarn 原理介绍

    Yarn 原理介绍 大纲: Hadoop 架构介绍 YARN 产生的背景 YARN 基础架构及原理   Hadoop的1.X架构的介绍   在1.x中的NameNodes只可能有一个,虽然可以通过Se ...

  4. 04 MapReduce原理介绍

    大数据实战(上) # MapReduce原理介绍 大纲: * Mapreduce介绍 * MapReduce2运行原理 * shuffle及排序    定义 * Mapreduce 最早是由googl ...

  5. Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...

  6. [转]MySQL主从复制原理介绍

    MySQL主从复制原理介绍 一.复制的原理 MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以 ...

  7. 【iOS开发】多屏尺的自动适配 AutoLayout (纯代码方式)

    关于AutoLayout,最早从iOS6开始引入使用.   主要功能是使用约束,对视图进行相对布局,以适应不同屏尺的变换.   网上大量的资料都在介绍xib和storyboard,如何使用AutoLa ...

  8. iOS高仿app源码:纯代码打造高仿优质《内涵段子》

    iOS高仿app源码:纯代码打造高仿优质<内涵段子>收藏下来 字数1950 阅读4999 评论173 喜欢133 Github 地址 https://github.com/Charlesy ...

  9. autoLyout纯代码适配

    前言 1 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时 ...

随机推荐

  1. Fuzzy模糊推导(Matlab实现)

    问题呈述 在模糊控制这门课程中,学到了与模糊数学及模糊推理相关的内容,但是并不太清楚我们在选择模糊规则时应该如何处理,是所有的规则都需要由人手工选择,还是仅需要选择其中的一部分就可以了.因此,在课程示 ...

  2. 2019CSP day1t2 括号树

    题目背景 本题中合法括号串的定义如下: () 是合法括号串. 如果 A 是合法括号串,则 (A) 是合法括号串. 如果 A,B 是合法括号串,则 AB 是合法括号串. 本题中子串与不同的子串的定义如下 ...

  3. Linux入门之简介

    1.啥是linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户.多任务.支持多线程和多CPU的操作系统. 它能运行主要的Unix工具软件.应用程序 ...

  4. asp.net Mvc 使用NPOI导出Excel文件

    1.新建MVC项目,新建控制器.视图 添加控制器: 添加视图(将使用布局页前面的复选框里的勾勾去掉) 2.在Models里新建一个类 public class Shop { /// <summa ...

  5. vim-plug golang定义跳转godef

    go get -v github.com/rogpeppe/godef go install -v github.com/rogpeppe/godef ~/.config/nvim/init.vim ...

  6. PostGIS安装教程

    安装环境: win10专业版 postgresql-10.6-1-windows-x64 ---因为使用的是ArcGIS10.4版本,pg10.6对于ArcGIS10.4版本过高,建议选择安装pg9. ...

  7. &#128293;《手把手教你》系列练习篇之1-python+ selenium自动化测试(详细教程)

    1.简介 相信各位小伙伴或者同学们通过前面已经介绍了的Python+Selenium基础篇,通过前面几篇文章的介绍和练习,Selenium+Python的webUI自动化测试算是 一只脚已经迈入这个门 ...

  8. 从零开始在ubuntu上配置深度学习开发环境

    从零开始在ubuntu上配置深度学习开发环境 昨天一不小心把原来配置好的台式机的开发环境破坏了,调了半天没有调回来,索性就重装一次ubuntu系统.这篇文章主要记录一个简单的.‘傻瓜式’教程. 一.U ...

  9. scss--函数 (Functions)--unit

    (Sass::Script::Value::String) unit($number) Returns the unit(s) associated with a number. Complex un ...

  10. <编译原理 - 函数绘图语言解释器(2)语法分析器 - python>

    <编译原理 - 函数绘图语言解释器(2)语法分析器 - python> 背景 编译原理上机实现一个对函数绘图语言的解释器 - 用除C外的不同种语言实现 设计思路: 设计函数绘图语言的文法, ...