首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS-控制器View的创建和生命周期

控制器View的创建 首先我们来看一下控制器view创建的流程图 控制器view加载.jpeg 从图中我们可以看出,在控制器view加载过程中有两个重要的方法loadView和viewDidLoad。...首先判断下有没有指定storyboard或者xib,如果指定,就会加载它们描述的控制器的view,如果没有指定,创建一个空的view。...通过storyboard创建的控制器,或者通过xib创建的控制器的view,系统会帮我们加载控制器的view,具体内部实现可以看iOS-UIWindow详解,在此不在赘述 ViewController...(1).判断下有没有指定nibName,如果指定了,就会去加载指定的xib (2).如果没有指定,就会判断下有没有跟控制器类名同名的xib,有,就会去加载 (3).判断下有没有跟控制器类名同名的xib...,但是后缀不带Controller的xib,如果有,就会去加载 (4).如果没有任何xib描述控制器的view,就不会加载xib。

1.4K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS-自定义View的封装

    在开发过程中,自定义控件使用的频率非常高,接下来简单对自定义控件做个小结 View的封装 如果一个view内部的子控件比较多,一般会考虑自定义一个view,把它内部的子控件创建封装起来,不让外界看见 外界可以传入对应的数据模型给...view,view拿到模型数据后给内部子控件设置对应的数据 代码封装 新建一个继承UIView的类 在initWithFrame:方法中添加子控件(也可以使用懒加载) 重写模型属性set方法,在set方法中设置模型属性到子控件上...在layoutSubviews方法中设置子控件的frame(一定要调用[super layoutSubviews]) 关于layoutSubviews在以下情况下会被调用: - init初始化不会触发...封装 新建一个继承UIView的类 新建一个xib文件(xib的文件名最好和控件名一样,修改最外面那个控件的class为控件类名 ) 创建xib 添加子控件、设置子控件属性...而用xib相对于比较死板,但是更简单,更方便 自定义UIView时,如果该View一直一个样式,推荐使用xib,简单方便 而子控件经常随着父控件变化而变化,推荐使用纯代码,灵活多变

    30310

    iOS - Swift 面向协议编程(二)面向对象开发

    上一篇文章iOS - Swift 面向协议编程(一) 已经对Swift的面向协议编程做了介绍,接下来该篇文章将使用面向协议开发(POP)来做下实际的应用 在实际开发中,自定义View基本上是必须的...,相信这对我们来说都是比较简单,不过我们还是来回顾一下下~ 面向对象开发 1 新建一个UIView的FirstTypeView ?...FirstTypeView 2 创建一个View的xib文件 ? xib 3 设置xib对应的class进行绑定 ?...xib class 4 在FirstTypeView.swift 中实现一个类方法,方便我们外部用xib来初始化FirstTypeView import UIKit class FirstTypeView...好,现在又有一个类SecondTypeView,也是要求使用xib来初始化view。这时我们就会想,一样的加载xib的方法,那我们就把它抽取出来放到父类就可以了。

    61130

    自定义View

    自定义View 通过纯代码自定义控件 继承自系统自带的控件,写一个属于自己的控件 在 .h 文件中声明模型对象 @class@property(nonatomic,strong)Shop *shop;...目的:封装控件内部的细节,不让外界关心 步骤 新建一个继承UIView的类 在initWithFrame:方法中添加子控件 当控件第一次创建或者通过 init 和initWithFrame...创建,初始化会调用initWithCoder 如果控件通过Xib,storyboard 创建,初始化完毕会调用awakeFromNib建议在此设置必要的Frame -(instancetype)initWithFrame...= [UIImage imageNamed:shop.icon]; self.shopLabel.text = shop.namelabel; } 通过xib自定义控件 新建一个继承UIView...xib方法 xib 编译之后变为 Nib 文件 第一种加载方法 //返回一个数组 NSArry *xibArray = [[NSBundle mainBundle] loadNibNamed

    73560

    【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    , 一个应用只需创建一次 UIWindow 窗口; -- FKViewController 属性 : 代表视图控制器, 系统创建控制器时, 通常会加载对应的 xib 文件; -- 应用初始界面 : 在..., 箭头指向需要加载的 视图控制器; -- 移动箭头 : 视图中只有一个 UI 控制器, 移动箭头始终指向唯一的 一个 UI 控制器; -- 好处 : 可以直观地看到多个视图之间的协作关系, 可以在 Interface...自定义 UI 控件 (1) 自定义组件简介 自定义组件简介 :  -- UIView 基类 : 所有的 UI 控件都继承了 UIView 基类, UI 组件在 UIView 提供的空白区域上绘制具体的细节...方法 : UI 控件初始化方法, 用于对 UI 控件额外初始化操作时使用; -- "initWithCoder :" 方法 : 界面设计文件中加载完该控件后, 自动调用的方法; -- "drawRect..., 使用 command + option + 3 打开身份检查器, 由身份检查器上可以看到 其 Custom Class 属性为 UIView, 因此该界面的根控件时 UIView; -- 创建自定义类

    5K30

    自定义类加载器加载jar包_类加载器的可见性

    大家好,又见面了,我是你们的朋友全栈君。...spring根本不会去管自己被放在哪里,它统统使用TCCL来加载类,而TCCL默认设置为了WebAppClassLoader,也就是说哪个WebApp应用调用了spring,spring就去取该应用自己的...这在真正理解线程上下文类加载器(多案例分析)中已有详细描述。 因此,为了使spring使用自定义的类加载器进行加载,需要开一个线程,将这个线程的类加载器设置为自定义类加载器。...; }; FutureTask task=new FutureTask(callable); Thread thread=new Thread(task); // 设置线程上下文类加载器...return task.get(); }catch (Exception e){ e.printStackTrace(); } return null; } 参考网站 真正理解线程上下文类加载器

    83520

    两种通过Plist加载图片的方法及问题,九宫格的算法,字典转模型1. 序列帧动画实现2. 图片浏览器-两种加载plist的方式3. 图片浏览器-内存问题4 MVC简单介绍和类前缀5 应用管理-两种加载

    图片浏览器-内存问题 3.1 加载图片的两种方法 1.1 通过imageNamed方法 系统会进行缓存,程序员无法销毁....4 MVC简单介绍和类前缀 模型 : 数据 视图 : 负责显示 控制器 : 处理逻辑,如跳转界面 类前缀苹果推荐使用三个或三个以上字母,防止重名 5 应用管理-两种加载xib的方式 从 NSBundle...加载XIB,只需要在第一个参数传入 XIB 的文件名,注意:没有扩展名 方法1,iOS 3.0 的方法 UIView *appView = [[NSBundle mainBundle] loadNibNamed...UIView *appView = [nib instantiateWithOwner:nil options:nil].lastObject; 6-应用管理-管理XIB的类 管理xib的类一般做两个事件...appView; @end 在自定义View中,新建类方法返回自己的实例,然后加载xib.

    87230

    iOS面试题-UI篇

    UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和坐标有关的属性,如frame,bounds等,实际上内部都是访问它所在CALayer的相关属性 UIView有个layer属性,可以返回它的主...loadView用来自定义view,只要实现了这个方法,其他通过xib或storyboard创建的view都不会被加载 看懂控制器view创建的这个图就行 [image] IBOutlet连出来的视图属性为什么可以被设置成...这样的话从性能的角度来说,对CPU和内存来说都是欠佳的。...就是问的view的生命周期,下面已经按方法执行顺序进行了排序 // 自定义控制器view,这个方法只有实现了才会执行 - (void)loadView { self.view = [[UIView...可以通过纯代码或者xib的方式来封装子控件 建立一个跟view相关的模型,然后将模型数据传给view,通过模型上的数据给view的子控件赋值 /** * 纯代码初始化控件时一定会走这个方法 */

    2K21

    UIViewController生命周期

    一、视图控制器 UIViewController采用懒加载的方式,也就是说第一次访问到view属性时才会加载或创建它。...由于视图由视图控制器管理,所以讨论视图的加载方式时,主要讨论视图控制器的加载方式。 通过Storyboard加载:这是苹果推荐的方式。...通过加载xib文件来创建UIViewController的view 如果没有找到相关联的xib文件,就会创建一个空白的UIView,然后赋值给UIViewController的view属性 默认不用实现...无论是从nib文件加载,还是通过纯代码编写界面,viewDidLoad方法都会执行。我们可以重写这个方法,对通过nib文件加载的view做一些其他的初始化工作。...从继承关系来看,UIWindow继承自UIView,所以UIWindow除了具有UIView的所有功能之外,还增加了一些特有的属性和方法,而我们最常用的方法,就是在App刚启动时,调用UIWindow的

    2K10

    iOS 关于Interface Building 的一些小技巧

    从纯代码UI -> 最初的Xib -> StoryBoard ,感受到UI的搭建也是逐渐可视化,简单化。我是一个可视乎开发的支持者,有一些朋友不喜欢,这个纯属个人爱好,风格不同。...有时候我们想在XIb里直观修改Xib属性,但是Xcode并不全部提供属性修改,可以通过Keypath修改,但是键入太麻烦容易出错,所以可以通过IBInspectable添加自定义属性。...didSet{ self.layer.cornerRadius = myRaduis } } } # 视图复用 1.自定义Xib View复用 Xcode...(coder: NSCoder)初始化方法中,添加xib视图。 import UIKit class SbView: UIView { required init?...基本属性: 属性 作用 identifier 字符串标识,区分页面不同Segue source 跳转之前的控制器 destination 需要跳转到的控制器 传值: 有时候我们需要判断是否满足跳转的条件

    1.8K31

    《iOS UI 开发捷径 利用 Interface Builder 高效、优雅地开发 UI》 读书笔记第1章 Interface Bundle 概要第2章 使用 Interface Builder第3

    关联 xib 文件与源文件 关联 xib 文件与 UIView 子类的源文件 新建一个空的xib文件,拖一个UIView上去 新建一个继承自UIView的源文件 选中xib文件里的View,把class...mvc 理解 File's Owner 关联 xib 文件与 UIViewController 子类的源文件 自定义一个 VC 的 View 的两种方法 在 IB 文件中选中 VC 所在的 View,在...Show the Identity inspector 中设置 Class 标签的值为自定义的 View 的类名。...在源文件的 loadView() 方法里设置该 VC 的 View 属性为这个自定义的 View。...方式加载 通过 UINib 方式加载 使用与UIView子类源文件关联的xib Bundle - (NSArray *)loadNibNamed:(NSString *)name

    2.5K80
    领券