因此处理的主要工作是在viewController。 我们知道,创建viewcontroller时,执行顺序是loadview -> viewDidLoad。...当重新显示该viewController时,执行过viewDidUnLoad的viewcontroller(即原来在后台)会重新调用loadview -> viewDidLoad。...这个方法的默认实现是这样:先寻找有关可用的nib文件的信息,根据这个信息来加载nib文件,如果没有有关nib文件的信息,默认实现会创建一个空白的UIView对象,然后让这个对象成为controller的主...二、viewDidLoad 这个函数在controller加载了相关的views后被调用,而不论这些views存储在nib文件里还是在loadView函数中生成。...四、结论 所以流程应该是这样: (loadView/nib文件)来加载view到内存 ——>viewDidLoad函数进一步初始化这些view ——>内存不足时,调用viewDidUnload函数释放
控制器View的创建 首先我们来看一下控制器view创建的流程图 控制器view加载.jpeg 从图中我们可以看出,在控制器view加载过程中有两个重要的方法loadView和viewDidLoad。...通过storyboard创建的控制器,或者通过xib创建的控制器的view,系统会帮我们加载控制器的view,具体内部实现可以看iOS-UIWindow详解,在此不在赘述 ViewController...控制器View的生命周期 控制器View的生命周期方法 loadView: 加载view viewDidLoad: view...加载完成的时候调用 (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view..., typically from a nib.
声明出了这个指针,我们该如何给它传递这个函数呢?...@interface ViewController () { SEL myLog; } @end @implementation ViewController - (void)viewDidLoad... { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib..." @interface ViewController () { SEL myLog; } @end @implementation ViewController - (void)viewDidLoad... { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib
是重量级的,用来描述整个软件的多个界面,并且能够展示多个界面的跳转关系 加载xib xib文件在编译的后会变成nib文件 xib文件.png 第一种加载方式 NSArray * xibArray = [...UINib *nib = [UINib nibWithNibName:NSStringFromClass(self) bundle:nil]; NSArray *xibArray = [nib instantiateWithOwner...,如果有就去加载(XXViewController.xib) 控制器类名同名的xib 第二步:寻找有没有和控制器类名同名但是不带Controller的xib,如果有就去加载(XXView.xib)...- (void)viewDidLoad { [super viewDidLoad]; CustomViw *customView = [[CustomViw alloc] init];...} @end log打印 通过init方法初始化自定义控件log打印 通过加载xib方法初始化自定义控件 @implementation ViewController - (void)viewDidLoad
从归档初始化 - (instancetype)initWithCoder:(NSCoder *)coder; //加载视图 -(void)loadView; //将要加载视图 - (void)viewDidLoad...2:init方法和initCoder方法相似,只是被调用的环境不一样,如果用代码进行初始化,会调用init,从nib文件或者归档进行初始化,会调用initCoder。...注意:经过测试,从nib文件加载的controller,只要不释放,在每次viewWillAppare时都会调用layoutSubviews方法,有时甚至会在viewDidAppare后在调用一次layoutSubviews...三、从storyBoard加载UIViewController实例的传值陷阱 我们知道,当我们从StoryBoard中加载ViewController时,我们在Controller中拖拽的视图是可以被初始化的...我们可以把它连接到viewController2中的一个按钮上: ? 这样,当我们点击viewController2中的按钮时,就会返回到我们第一个ViewController1中了。
自从block出现之后,很多API都开始采用这样的结构,由此可见,block确实有许多优势存在,这里将一些简单用法总结如下: 一、如何声明一个block变量 我们通过^符号来声明block类型,形式如下...int (^myBlock)(int a,int b) ; -(void)func:(myBlock)block ; 二、如何实现一个block 既然block可以被声明为变量,那么就一定可以实现它,就像其他类型变量的赋值... myBlock block1; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad... setup after loading the view, typically from a nib. ... the view, typically from a nib.
UIView是UIKit框架里面最基础的视图类。UIView类定义了一个矩形的区域,并管理该矩形区域内的所有屏幕显示。 控件 ?...func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view,typically...from a nib....)) import UIKit class ViewController:UIViewController { override func viewDidLoad() { super.viewDidLoad...中调用 import UIKit class ViewController:UIViewController { override func viewDidLoad() { super.viewDidLoad
从 Xcode 4.4 开始,当我们用 @property 进行属性声明的时候,编译器就会自动帮我们生成相应的 实例变量 + 存取方法声明 + 存取方法实现; 那什么情况下会破坏这种自动合成的过程呢?...; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any...) NSUInteger _age; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad...setter 可以是 nil,但 getter 不能返回nil; 重写 setter 或 getter 方法,警告都会取消,但是正确的做法是重写 getter 方法处理返回 nil 的情况; Ep: #...ViewController // - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after
代码的执行顺序 1、alloc 创建对象,分配空间 2、init (initWithNibName) 初始化对象,初始化数据 3、loadView从nib载入视图,通常这一步不需要去干涉。...viewDidAppear视图已在屏幕上渲染完成 当一个视图被移除屏幕并且销毁的时候的执行顺序,这个顺序差不多和上面的相反 1、viewWillDisappear视图将被从屏幕上移除之前执行 2、viewDidDisappear...视图已经被从屏幕上移除,用户看不到这个视图了 3、dealloc视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放 关于viewDidUnload:在发生内存警告的时候如果本视图不是当前屏幕上正在显示的视图的话...但是要注意,这个方法只会在APP刚开始加载的时候调用一次,以后都不会再调用它了,所以只能用来做初始设置。...他们都可以用来在视图载入的时候,初始化一些内容。 但是他们有什么区别呢? viewDidLoad 此方法只有当view从nib文件初始化的时候才被调用。
controller的nibName和nibBundle属性来尝试从nib文件加载view。...如果没有找到nib文件,它尝试寻找一个与view controller类名匹配(viewControllerClassName.nib)的nib文件。 ...4 controller调用viewDidLoad方法来执行一些加载时(加载时一词,相对于编译时、运行时)任务。 ...从nib或者loadView函数)。...我们在手势识别中只需要告诉这个类的实例当前的状态百分比如何,系统便根据这个百分比和我们之前设定的迁移方式为我们计算当前应该的UI渲染,十分方便。
在iOS10中,苹果为UICollectionViewCell引入了Pre-Fetching预加载机制用于提升它的性能。...翻译文档)的文章很多,有干货的Demo很少,于是乎自己摸索了一下,写了一个简单的案例,在此记录并分享一下。...; collection.delegate = self; collection.prefetchDataSource = self; //注册Cell UINib *nib...= [UINib nibWithNibName:@"ImgCollectionViewCell" bundle:nil]; [collection registerNib:nib forCellWithReuseIdentifier...效果演示.gif 写在后面的话 1、这个新特性仍然需要探究 2、遇到的一个坑:细心看的话可以发现我的字典是懒加载的,如果直接在viewDidLoad中初始化会在 weakSelf.imgs[currentURL
欢迎访问我的个人博客 首先在需要引入Swift的文件中导入头文件#import "工程名-Swift.h" OC跳转Swift页面: #import "ViewController.h" #import..."OCAndSwift-Swift.h" // 引入头文件 @interface ViewController () @end @implementation ViewController...- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view..., typically from a nib. } - (IBAction)btnClicked:(id)sender { // Swift文件 ChildViewController...-Bridging-Header.h文件,在这个文件中将需要用到的OC文件导入到这里!!!
大家好,又见面了,我是全栈君 awakeFromNib 在使用IB的时候才会涉及到此方法的使用。...当.nib文件被载入的时候,会发送一个awakeFromNib的消息到.nib文件里的每一个对象,每一个对象都能够定义自己的awakeFromNib函数来响应这个消息。运行一些必要的操作。...看样例: 创建一个viewController with XIB 定义一个UIView的子类 打开xib,并把View的类型指定为上一步骤定义的子类 然后在TestView.m中增加 awakeFromNib...当程序对Nib文件进行反序列化然后初始化时,会调用一次awakeFromNib。 可是假设你使用initWithNibName调入Nib时,awakeFromNib是不会被调用的。...第五句:首先结束后,view之后,呼叫处理好viewDidLoad该,所以无论从代码或从IB载入中view应该调用viewDidLoad的。
1 import UIKit 2 import CoreData 3 4 class ViewController:UIViewController { 5 override func viewDidLoad...() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view, typically from a nib...23 } 24 } 25 } //2 1 import UIKit 2 import CoreData 3 4 class ViewController:UIViewController {...5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 // Do any additional setup after loading...{ 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading
完成 - (void)awakeFromNib { [super awakeFromNib]; NSLog(@"%s", __FUNCTION__); } // 加载视图(默认从nib...,viewController自带的view加载完成 - (void)viewDidLoad { NSLog(@"%s", __FUNCTION__); [super viewDidLoad...loadView 当执行到loadView方法时,如果视图控制器是通过nib创建,那么视图控制器已经从nib文件中被解档并创建好了,接下来任务就是对view进行初始化。...在创建view的过程中,首先会根据nibName去找对应的nib文件然后加载。...viewWillAppear 系统在载入所有的数据后,将会在屏幕上显示视图,这时会先调用这个方法,通常我们会在这个方法对即将显示的视图做进一步的设置。
1 let thread = Thread.init(target:self, selector: selector(ViewController.threadAction), object:nil)...方法进行修改,对imageView属性和label属性进 行初始化,并创建一个新的线程来执行网络图片的下载工作。...3 override func viewDidLoad() { 4 super.viewDidLoad() 5 // Do any additional setup after loading the...view, typically from a nib. 6 imageView = UIImageView(frame:CGRect(x:0, y: 260, width:320, height...25 let image = UIImage(data:data) 26 self.perform(#selector(ViewController.showImage), on:Thread.main
做这个demo的主要心得就是自适应所有的屏幕,要先布局大的框架,再一步一步设置小的细节。...看一下效果 再看一下自动适应所有屏幕的效果: keyboard打开时整个frame上移一个keyboard的高度 override func viewDidLoad() { super.viewDidLoad...() // Do any additional setup after loading the view, typically from a nib....NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.keyboardWillShow...UIKeyboardWillShowNotification, object: nil) NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.keyboardWillHide
通过Nib文件加载: Nib文件其实就是xib文件,Storyboard相当于是聚合了多个nib文件,并且添加了对不同的UIViewController之间的segue和relationship...init里不要掉self.view,否则会导致viewcontroller创建view。(因为view是lazyinit的)。...2、ViewDidLoad loadView方法执行完之后,就会执行viewDidLoad方法。此时整个视图层次(view hierarchy)已经被放到内存中。...无论是从nib文件加载,还是通过纯代码编写界面,viewDidLoad方法都会执行。我们可以重写这个方法,对通过nib文件加载的view做一些其他的初始化工作。...合创建一些附加的view和控件 3、ViewWillAppear 在视图加载完成,并即将显示在屏幕上时,会调用viewWillAppear方法,在这个方法里,可以改变当前屏幕方向或状态栏的风格等。
在需要使用扫描的controller中实现ZBarReaderViewDelegate 6....对应的m文件中 #import "ViewController.h" @interface ViewController () { UITextField *resultText...ZBarReaderView *readerView; ZBarCameraSimulator *cameraSim; } @end @implementation ViewController...- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading...the view, typically from a nib.
你可能认为它只是用来做动画的,但实际上它是从一个叫做Layer Kit这么一个不怎么和动画有关的名字演变而来,所以做动画这只是Core Animation特性的冰山一角。 ...Core Animation是一个复合引擎,它的职责就是尽可能快地组合屏幕上不同的可视内容,这个内容是被分解成独立的图层,存储在一个叫做图层树的体系之中。...于是这个树形成了UIKit以及在iOS应用程序当中你所能在屏幕上看见的一切的基础。 认识CALayer 创建Layer和Layer的基本几个简单的属性,不好说明的以后会单独拿出来做例子。...ViewController { CALayer * yellowLayer; } - (void)viewDidLoad { [super viewDidLoad];...// Do any additional setup after loading the view, typically from a nib.
领取专属 10元无门槛券
手把手带您无忧上云