initWithCoder与initWithFrame的区别】的更多相关文章

(1)awakeFromNib和initWithCoder:差别awakeFromNib 从xib或者storyboard加载完毕就会调用initWithCoder: 只要对象是从文件解析来的,就会调用同时存在会先调用initWithCoder: (2)initWithCoder: & initWithFrame:initWithCoder:使用文件加载的对象调用(如从xib或stroyboard中创建)initWithFrame:使用代码加载的对象调用(使用纯代码创建)注意:所以为了同时兼顾从…
1. initWithFrame方法是什么?   initWithFrame方法用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸). 当然,其他UI对象,也有initWithFrame方法,但是,我们以UIView为例,来搞清楚initWithFrame方法. 2.什么时候用initWithFrame方法? 简单的说,我们用编程方式申明,创建UIView对象时,使用initWithFrame方法. 在此,我们必须搞清楚,两种方式来进行初始化UIView. 使用 Interface…
从nib中加载对象实例时,init:或initWithFrame:都不会调用.而是调用initWithCoder:怎么理解:   有时候,知道initWithFrame方法如何用,但是么有弄明白initWithFrame方法到底是什么? 那就通过查资料弄明白.     1. initWithFrame方法是什么?   initWithFrame方法用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸). 当然,其他UI对象,也有initWithFrame方法,但是,我们以UIView为…
当我们创建或者自定义一个UI控件时,就很可能会调用awakeFromNib.initWithCoder .initWithFrame这些方法.三者的具体区别如下: initWithFrame: 通过代码创建UI控件的时候就会调用: initWithCoder:从文件中解析一个对象的时候就会调用这个方法,也就是说无论是通过代码还是xib,程序运行的时候都会调用这个方法: awakeFromNib:当一个对象从xib或者storyboard中加载完毕后,就会调用一次. 比如:当苹果官方提供的按钮不能…
当我们需要自定义一个View控件时,会有 initWithFrame.initWithCoder.awakeFromNib 这三个系统方法,关于这三个方法何时调用,如何调用,有时候可能很多人会弄混淆. 下面我会就理论结合代码举例来说明一下: 1.initWithFrame - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { NSLog(@"initWithFra…
每个ios开发者对loadView和viewDidLoad肯定都很熟悉,虽然这两个函数使用上真的是非常简单,但是和类似的initWithNibName/awakeFromNib/initWithCoder放在一起还是非常容易让人混淆的. 昨天看了下苹果官方的相关文档以及几篇相关内容的网页(一 二 三),其实这个内容以前也看过,似乎也搞清楚了,可还是忘了.好急性不如烂笔头,这次一定要好好记下来. 大前提是UIViewController有一个UIView.同时,需要厘清两个概念,创建一个类和实例化…
大前提是UIViewController有一个UIView.同时,需要厘清两个概念,创建一个类和实例化一个类.在XCode中创建一个类和实例化一个类很容易区分,但是在IB(Interface Builder)中有时候就会迷糊.其实也很好区分,孤零零地创建了一个nib文件,没有和其他可被实例化的类有直接或间接关系的时候,这个类或这些类(一个nib文件俺也可能包含多个类)是没有机会被实例化的,所以这种情况只是通过ib创建了一个类,而没有实例化.真正的实例化还需要通过在Xcode用代码来读取这个nib…
之前一直用代码来编写画面,现在着手使用storyboard和xib来构筑画面,遇到initWithCoder方法, 故查了下,initWithCoder方法的调用,看了篇博客,链接如下: http://lw5391.blog.163.com/blog/static/730430892014830143800 大体了解了下,在此记录一下方法查看. --------------------------------------------- 当我们所写的程序里没用用Nib文件(XIB)时,用代码控制视…
很多朋友如果是初学iOS开发,可能会被其中的几个加载方法给搞得晕头转向的,但是这几个方法又是作为iOS程序员必须要我们掌握的方法,下面我将对这几个方法做一下分析和对比,看看能不能增加大家对几个方法的理解和使用. 一.初始化-加载了什么 //加载带有xib的控制器 -(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil; //(控制器的View为空的时候调用,帮控制器加载Vi…
第一.initWithNibName这个方法是在controller的类在IB中创建,但是通过Xcode实例化controller的时候用的. 第二.initWithCoder 是一个类在IB中创建但在xocde中被实例化时被调用的.比如,通过IB创建一个controller的nib文件,然后在xcode中通过 initWithNibName来实例化这个controller,那么这个controller的initWithCoder会被调用.或者是一个view的nib文件,类似方法创建时调用ini…
1:Delegate运用 .h #import <UIKit/UIKit.h> @protocol FilterHeaderViewDelegate <NSObject> @required -(void)filterHeaderViewMoreBtnClicked:(id)sender; @end extern float CYLFilterHeaderViewHeigt; @interface FilterHeaderView : UICollectionReusableVie…
1. NSClassFromString 这个方法判断类是否存在,如果存在就动态加载的,不存为就返回一个空对象; id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init]; 正常情况下等价于:id myObj = [[MySpecialClass alloc] init]; 优点: 1, 弱化连接,因此并不会把没有的Framework也link到程序中. 2,不需要使用import,因为类是动态加载的,只要存在就可以加…
第一.initWithNibName这个方法是在controller的类在IB中创建,但是通过Xcode实例化controller的时候用的. 第二.initWithCoder 是一个类在IB中创建但在xocde中被实例化时被调用的.比如,通过IB创建一个controller的nib文件,然后在xcode中通过 initWithNibName来实例化这个controller,那么这个controller的initWithCoder会被调用.或者是一个view的nib文件,类似方法创建时调用ini…
1. initWithFrame方法是什么? initWithFrame方法用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸). 当然,其他UI对象,也有initWithFrame方法,但是,我们以UIView为例,来搞清楚initWithFrame方法. 2.什么时候用initWithFrame方法? 简单的说,我们用编程方式申明,创建UIView对象时,使用initWithFrame方法. 在此,我们必须搞清楚,两种方式来进行初始化UIView. 3.使用 Interface…
在iOS学习和程序开发过程中,我们经常会遇到一些自定义UI控件或控制器在初始化时出现问题,尤其在大家刚开始接触时,几种初始化方法的作用以及调用的时机往往容易混淆,这也跟我们对iOS程序设计中,类的创建和实例化的过程了解不透彻有关系.本文用一些小例子来简单梳理一下几者的关系,后面再陆续讨论一些复杂情况的深入对比. 问题: 一.什么时候用initWithFrame,什么时候用aweakFromNib.initWithCoder 二.在初始化时控件自身的frame何时能获得?layoutSubView…
http://robots.thoughtbot.com/designing-for-ios-graphics-performance  [原文] In the previous article, we explored different techniques to customize the look and feel of UIButton, assigning to each a difficulty level based on the complexity of the Object…
0416 注意调用关系,如下图: 就是initWithCoder:.initWithFrame.setup方法三元组…
A.需求 1.优化项目设置 2.自定义导航栏标题按钮 3.多版本处理 4.iOS6和iOS7的适配 5.设置按钮背景 6.设置值UIBarButtonItem样式   code source: https://github.com/hellovoidworld/HelloLottery   B.实现 1.项目配置 (1)程序启动期间隐藏状态栏   (2)程序启动完成显示状态栏 AppDelegate: - (BOOL)application:(UIApplication *)applicatio…
前言 IB_DESIGNABLE / IBInspectable 这两个关键字是在WWDC 2014年”What’s New in Interface Builder”这个Session里面,用Swift讲过一个例子.也是随着Xcode 6 新加入的关键字. 这两个关键字是用在我们自定义View上的,目前暂时只能用在UIView的子类中所以系统自带的原生的那些控件使用这个关键字都没有效果. Live RenderingYou can use two different attributes—@I…
Navigation导航设置 为了统一管理导航控制器,需要自定义导航控制器MJNavigationController,继承于UINavigationController.分别设置5个Navigation的控制器Class为此控制器. 白色状态栏 统一背景头部导航栏 设置所有Navigation导航栏字体颜色 二级页面隐藏底部导航条 1.白色状态栏.使用application管理状态栏 设置不使用控制器控制状态栏 在MJAppDelegate中设置: - (BOOL)application:(U…
NSClassFromString,NSSelectorFromString,isKingOfClass 1. NSClassFromString 这种方法推断类是否存在,假设存在就动态载入的,不存为就返回一个空对象; id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init]; 正常情况下等价于:id myObj = [[MySpecialClass alloc] init]; 长处: 1, 弱化连接,因此并不会把没有…
init.initWithFrame和initWithCoder的区别 1.Xib方式自定义UIView(指任意的UI控件) 使用Xib文件,就是我们所常用的“拖控件”的方式.如果我们使用了该方法创建了UIView(所有控件),那么initWithFrame方法是不会被调用的,因为nib文件已经定义好了view的长.宽.背景以及其他的一些属性.那么我们要想重写nib中的各项属性,就要在initWithCoder这个方法里面进行了. 2.纯代码的方式自定义UIView(指任意的UI控件) 用纯代码…
1.init 与initialize 对于iOS程序,创建几个类对象,就会调用几次init.下面分别重写 举例如下: 创建一个Person类,分别重写initialize和init方法 #import "Person.h" @implementation Person +(void)initialize {  NSLog(@"%s", __FUNCTION__);   } -(instancetype)init { NSLog(@"%s", __…
1.先把OC的类分清楚各有什么方法 普通类的方法 init initialize: 控制器类的方法 init initialize: initWithCoder: UI控件类的方法 init initialize: initWithCoder: initWithFrame: 2.init方法 每个类被创建的时候就会调用init方法 Person *p1 = [[Person alloc]init];Person *p2 = [[Person alloc]init];Person *p3 = [[…
当我们所写的程序里没用用Nib文件(XIB)时,用代码控制视图内容,需要调用initWithFrame去初始化 - (id)initWithFrame:(CGRect)frame{ if (self =[superinitWithFrame:frame]) { // 初始化代码 } return self; } 用于视图加载nib文件,从nib中加载对象实例时,使用 initWithCoder初始化这些实例对象 - (id)initWithCoder:(NSCoder*)coder{ if (s…
如果使用了Interface Builder 方式或nib,就不会调用initWithFrame方法,因为nib文件知道怎么初始化了, 但可以使用initWithCoder这一个更深层的init方法来重新定义nib文件的各种属性 - (id)initWithCoder:(NSCoder*)coder - (id)initWithFrame:(CGRect)frame initWithFrame方法用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸). UIView *contentV…
当我们所写的程序里用代码创建控制视图内容,需要调用initWithFrame去初始化 - (id)initWithFrame:(CGRect)frame { if (self =[superinitWithFrame:frame]) { // 初始化代码 } return self; } 当用nib文件视图时,使用 initWithCoder初始化这些实例对象 - (id)initWithCoder:(NSCoder*)coder { if (self =[superinitWithcoder:…
1 initWithFrame 通过代码创建控件的话用这个方法设置  2 initWithCoder(先执行) 与从xib加载有关系的 在此方法里面设置原有子控件的值是不行的,因为还没有连好线  3 aweakFormNib (后执行)方法的区别 与xib加载有关系 代表子控件从xib里面加载完成,并且,连线完成,直接可以使用 如果是从xib加载的来设置子控件的属性的话,要把代码放在aweakformNib里面…
当我们所写的程序里没用用Nib文件(XIB)时,用代码控制视图内容,需要调用initWithFrame去初始化 - (id)initWithFrame:(CGRect)frame { if (self =[superinitWithFrame:frame]) { // 初始化代码 } return self; } 用于视图加载nib文件,从nib中加载对象实例时,使用 initWithCoder初始化这些实例对象 - (id)initWithCoder:(NSCoder*)coder { if …
//当我们所写的程序里没用用Nib文件(XIB)时,用代码控制视图内容,需要调用initWithFrame去初始化 - (id)initWithFrame:(CGRect)frame { if (self =[superinitWithFrame:frame]) { // 初始化代码 } return self; } 用于视图加载nib文件,从nib中加载对象实例时,使用 initWithCoder初始化这些实例对象 - (id)initWithCoder:(NSCoder*)coder { i…