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. 「Luogu 3792」由乃与大母神原型和偶像崇拜

    更好的阅读体验 Portal Portal1: Luogu Description 给你一个序列\(a\) 每次两个操作: 修改\(x\)位置的值为\(y\): 查询区间\([l, r]\)是否可以重 ...

  2. python——int()、hex()、oct()、bin()、float()数值类型转换函数

    摘要:在python中,数值类型转换函数常用的有浮点型float().取整int().八进制oct().二进制bin().十六进制hex()这五个函数. 单词float的意思就是浮动的意思: int是 ...

  3. yum.rpm一点点

    rpm 1.rpm -qi查询包的详细信息 [root@centos7 tmp]# rpm -qi tree Name : tree Version : 1.6.0 Release : 10.el7 ...

  4. PHP 核心特性 - 命名空间

    提出 在命名空间提出之前,不同的组件很容易碰到命名的冲突,例如 Request .Response 等常见的命名.PHP 在 5.3 后提出了命名空间用来解决组件之间的命名冲突问题,主要参考了文件系统 ...

  5. [LC]21题 Merge Two Sorted Lists (合并两个有序链表)(链表)

    ①英文题目 Merge two sorted linked lists and return it as a new list. The new list should be made by spli ...

  6. 关于html与css的标签及属性(text文本属性、背景background属性、表格标签table、列表、)

    text文本属性1.颜色 colorcolor:red: 2.文本缩进text-indant属性值 num+px text-indant:10px:3.文本修饰 text-decoration属性值: ...

  7. linux命令--文件目录操作命令

    一.命令的基本格式 1.命令提示符 [root@love2 ~]# []:这是提示符的分隔符号,没有特殊含义. root:显示的是当前的登录用户. @:分隔符号,没有特殊含义.love2:当前系统的主 ...

  8. 实现 Redis 协议解析器

    本文是 <用 Golang 实现一个 Redis>系列文章第二篇,本文将分别介绍Redis 通信协议 以及 协议解析器 的实现,若您对协议有所了解可以直接阅读协议解析器部分. Redis ...

  9. Component 和 PureComponent 的区别;复制demo,肉眼可以的区别

    React.PureComponent它用当前与之前 props 和 state 的浅比较覆写了 shouldComponentUpdate() 的实现.简单来说,就是PureComponent简单实 ...

  10. python3快速入门教程错误和异常

    Python 中(至少)有两种错误:语法错误(syntax errors)和异常(exceptions). 语法错误 语法错误又称作解析错误: >>> while True prin ...