initWithFrame 和 initWithCoder

当我们所写的程序里没用用Nib文件(XIB)时,用代码控制视图内容,需要调用initWithFrame去初始化

- (id)initWithFrame:(CGRect)frame

{

if (self =[superinitWithFrame:frame]) {

// 初始化代码

}

return self;

}

用于视图加载nib文件,从nib中加载对象实例时,使用 initWithCoder初始化这些实例对象

- (id)initWithCoder:(NSCoder*)coder

{

if (self =[superinitWithcoder:coder]) {

// 初始化代码

}

return self;

}

注意点:

1、初始化方法实现中,须先调用父类的该方法

2、代码创建视图的是【initWithFrame】,使用xib 和storyboard创建出来调用的是【initWithCoder】

3、代码创建视图,如果调用的是init方法,那么init方法内部一定有调用【initWithFrame】

4、重写view,自定义view,上面两个方法都要重写;

时间: 2024-08-06 18:07:06

initWithFrame 和 initWithCoder的相关文章

iOS initWithFrame、initWithCoder、awakeFromNib的区别解析

当我们需要自定义一个View控件时,会有 initWithFrame.initWithCoder.awakeFromNib 这三个系统方法,关于这三个方法何时调用,如何调用,有时候可能很多人会弄混淆. 下面我会就理论结合代码举例来说明一下: 1.initWithFrame - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { NSLog(@"initWithFra

initWithFrame、initWithCoder、awakeFromNib的区别和调用次序 & UIViewController生命周期 查缺补漏

当我们创建或者自定义一个UI控件时,就很可能会调用awakeFromNib.initWithCoder .initWithFrame这些方法.三者的具体区别如下: initWithFrame: 通过代码创建UI控件的时候就会调用: initWithCoder:从文件中解析一个对象的时候就会调用这个方法,也就是说无论是通过代码还是xib,程序运行的时候都会调用这个方法: awakeFromNib:当一个对象从xib或者storyboard中加载完毕后,就会调用一次. 比如:当苹果官方提供的按钮不能

initWithFrame 与 initWithCoder 、awakeFromNib 的方法理解笔记

有时候,知道initWithFrame方法如何用,但是么有弄明白initWithFrame方法到底是什么? 那就通过查资料弄明白. 1. initWithFrame方法是什么? initWithFrame方法用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸). 当然,其他UI对象,也有initWithFrame方法,但是,我们以UIView为例,来搞清楚initWithFrame方法. 2.什么时候用initWithFrame方法? 简单的说,我们用编程方式申明,创建UIView对

UI控件初始化问题:initWithFrame和initWithCoder、aweakFromNib的执行

在iOS学习和程序开发过程中,我们经常会遇到一些自定义UI控件或控制器在初始化时出现问题,尤其在大家刚开始接触时,几种初始化方法的作用以及调用的时机往往容易混淆,这也跟我们对iOS程序设计中,类的创建和实例化的过程了解不透彻有关系.本文用一些小例子来简单梳理一下几者的关系,后面再陆续讨论一些复杂情况的深入对比. 问题: 一.什么时候用initWithFrame,什么时候用aweakFromNib.initWithCoder 二.在初始化时控件自身的frame何时能获得?layoutSubView

initWithFrame和initWithCoder使用技巧,以及他们什么时候被调用,自定义控件必须具备三个方法initWithFrame和initWithCoder以及drawRect

////  MJLockView.m//  03-手势解锁////  Created by apple on 14-4-20.//  Copyright (c) 2014年 itcast. All rights reserved.// #import "MJLockView.h" @implementation MJLockView//当你通过代码创建控件就会调用这个方法- (id)initWithFrame:(CGRect)frame{    self = [super initWi

ios--控件--自定义封装一个控件

感谢原作者的分享: http://blog.csdn.net/zhangao0086/article/details/45622875 前言 一个控件从外在特征来说,主要是封装这几点: 交互方式 显示样式 数据使用 对外在特征的封装,能让我们在多种环境下达到 PM 对产品的要求,并且提到代码复用率,使维护工作保持在一个相对较小的范围内:而一个好的控件除了有对外一致的体验之外,还有其内在特征: 灵活性 低耦合 易拓展 易维护 通常特征之间需要做一些取舍,比如灵活性与耦合度,有时候接口越多越能适应各

设计一个 iOS 控件

代码的等级:可编译.可运行.可测试.可读.可维护.可复用 前言 一个控件从外在特征来说,主要是封装这几点: 交互方式 显示样式 数据使用 对外在特征的封装,能让我们在多种环境下达到 PM 对产品的要求,并且提到代码复用率,使维护工作保持在一个相对较小的范围内:而一个好的控件除了有对外一致的体验之外,还有其内在特征: 灵活性 低耦合 易拓展 易维护 通常特征之间需要做一些取舍,比如灵活性与耦合度,有时候接口越多越能适应各种环境,但是接口越少对外产生的依赖就越少,维护起来也更容易.通常一些前期看起来

创建控件系统自动调用方法的小小研究

闲来蛋疼,想看看每当我们以各种方式创建一个控件的时候,系统底层到底帮我们做了什么事儿!相信各位看官在开发中经常也会把系统自动调用的一些方法给拦截下来,再在这些方法中添加自己想实现的某个功能的代码.下面小小研究了某些控件创建时候系统自动帮助我们调用的某些方法.     我们创建控件的方法有三种      1.纯代码      2.storyboard      3.xib          创建控件的过程中系统会自动调用底层的一些方法,方法常见的大概如下      init      initWi

UIView之基础控件综合事例

九宫格算法实现及优化 2015年11月19日 星期四 23:21 1.九宫格之初实现 要求: 1.1在主界面中,点击添加按钮就能添加商品,点击删除按钮就能删除商品; 1.2在初始化界面中,添加按钮处于norma状态,删除按钮处于disable状态; 1.3当点击了添加按钮后,删除按钮此时处于normal状态; 1.4当商品满了后,添加按钮处于disable状态,删除按钮处于normal状态; 1.5当商品为空或者满了的时候给出提示语; 算法思路实现: 1.界面的实现:分析要用到的控件,此需求中,