控件通过xib,storyboard创建,初始化设置一定会调用initWithCoder

awakeFromNib 加载完毕的时候肯定会调用

layoutSubviews 布局子控件 位置和尺寸

利用代码证实

先创建wlisView.xib 拖两个控件 imageView 和 Label

创建一个类 wlisView.h  并且让wlisView.xib 自定义类 class  wlisView

在wlisView.h 声明一个类方法

+(instancetype)wlisViewWith;

在wlisView.m文件中实现改方法   并且连线 xib中的两个子控件

#import "wlisView.h"

@interface wlisView ()
/**
连线xib中UIImageView
*/
@property (weak, nonatomic) IBOutlet UIImageView *imgView;
/**
连线xib中UILabel
*/
@property (weak, nonatomic) IBOutlet UILabel *lab; @end
@implementation wlisView /**
重写initWithCoder方法
*/
-(instancetype)initWithCoder:(NSCoder *)aDecoder{
if (self=[super initWithCoder:aDecoder]) {
/**
打印
*/
NSLog(@"%s",__func__);
NSLog(@"self.frame-%@",NSStringFromCGRect(self.frame));
NSLog(@"self.imgView-%@",NSStringFromCGRect(self.imgView.frame));
NSLog(@"self.lab-%@",NSStringFromCGRect(self.lab.frame));
}
return self; }
-(void)layoutSubviews{
[super layoutSubviews];
/**
打印
*/
NSLog(@"%s",__func__);
NSLog(@"self.frame-%@",NSStringFromCGRect(self.frame));
NSLog(@"self.imgView-%@",NSStringFromCGRect(self.imgView.frame));
NSLog(@"self.lab-%@",NSStringFromCGRect(self.lab.frame));
}
-(void)awakeFromNib{
[super awakeFromNib];
/**
打印
*/
NSLog(@"%s",__func__);
NSLog(@"self.frame-%@",NSStringFromCGRect(self.frame));
NSLog(@"self.imgView-%@",NSStringFromCGRect(self.imgView.frame));
NSLog(@"self.lab-%@",NSStringFromCGRect(self.lab.frame));
} /**
创建
*/
+(instancetype)wlisViewWith{
//读取跟类文件中相同名称的xibNSStringFromClass(self) 并且创建
return [[[NSBundle mainBundle]loadNibNamed:NSStringFromClass(self) owner:nil options:nil]lastObject]; }
@end

wlisView.m

在ViewController创建

#import "ViewController.h"
#import "wlisView.h"
@interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
wlisView * wl=[wlisView wlisViewWith];
[self.view addSubview:wl];
}
@end

ViewController

打印输出结果:

个人认为记住一个方法就好了,那就是layoutSubviews 这个方法

因为这个方法是苹果为我们准备更改控件的 为什么不用

xcode initWithCoder\awakeFromNib\layoutSubviews的更多相关文章

  1. initWithNibName&initWithCoder &awakeFromNib&UIView常见属性方法

    第一.initWithNibName这个方法是在controller的类在IB中创建,但是通过Xcode实例化controller的时候用的. 第 二.initWithCoder 是一个类在IB中创建 ...

  2. init,initialize,initWithFrame,initWithCoder,awakeFromNib等区别

    1.init 与initialize 对于iOS程序,创建几个类对象,就会调用几次init.下面分别重写 举例如下: 创建一个Person类,分别重写initialize和init方法 #import ...

  3. iOS initWithFrame、initWithCoder、awakeFromNib的区别解析

    当我们需要自定义一个View控件时,会有 initWithFrame.initWithCoder.awakeFromNib 这三个系统方法,关于这三个方法何时调用,如何调用,有时候可能很多人会弄混淆. ...

  4. iOS中View生命周期与布局

    生命周期 说到view的生命周期一般都是指视图控制器的view生命周期. view的创建:loadView 视图控制器(UIViewController)及其子类,无论是手写代码还是storyboar ...

  5. iOS viewController 和 view 的创建消失生命周期总结

    控制器创建的生命周期 1. 如果从stroryBoard 中产生一个controller,那么会先调用initWithCoder:, awakeFromNib, loadView,viewDidLoa ...

  6. UIScrollView入门与框架设计

    一.概述 1.UIScrollView的contentSize, contentOffSet, contentInsets的作用和使用. 2.UIScrollView的一整个滚动过程的生命周期(开始滚 ...

  7. iOS:viewController 和 view 的生命周期、不错的代码设计风格

    一.介绍: viwe和viewController的生命周期是最基本的知识,如果很好地理解它们的方法调用的执行顺序,就能很好地设计代码的风格.这篇博客转载自:http://www.cnblogs.co ...

  8. UIViewController生命周期-完整版

    一.UIViewController 的生命周期 下面带 (NSObject)的方法是NSObject提供的方法.其他的都是UIViewController 提供的方法. load   (NSObje ...

  9. VIEWCONTROLLER的启动流程

    转载自:http://sunnyyoung.net/post/ios/2015-04-22-viewcontrollerde-qi-dong-liu-cheng-yu-jie-xi VIEWCONTR ...

随机推荐

  1. 非阻塞IO

    设置描述符非阻塞的两种方法: 1,调用 open 时,设置,O_NONBLOCK; 2,调用 fcntl设置: 具体如下: ,open("/xxx/file1",O_RDWR|O_ ...

  2. cad实时平移快捷键

    1.按住鼠标滚轮,光标变成小手工具,可拖动画布 2.键盘按 p,光标变成小手工具

  3. Delphi 编码转换 Unicode gbk big5(使用LCMapString设置区域后,再用API转换)

    原文:http://blog.dream4dev.com/article.asp?id=17 function UnicodeEncode(Str: string; CodePage: integer ...

  4. 在 Windows Azure 虚拟机中使用 Microsoft SQL Server 安全功能

    编辑人员注释:本文章由 SQL Server 团队高级项目经理 Sung Hsueh 撰写. SQL Server 的最新用法之一是利用 Microsoft 的 Windows Azure 基础结构服 ...

  5. Spring mvc 简单异常配置jsp页面

    原文出处:http://howtodoinjava.com/spring/spring-mvc/spring-mvc-simplemappingexceptionresolver-example/ 这 ...

  6. window.open打开新页面,并将本页数据用过url传递到打开的页面;需要两个页面;

    页面1 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8 ...

  7. 如何显示Mac OS X上的隐藏文件和文件夹

    显示隐藏文件以及文件夹命令: defaults write com.apple.finder AppleShowAllFiles YES Mac显示隐藏文件 对于OS X Mavericks 10.9 ...

  8. Powerdesigner逆向工程从sql server数据库生成pdm

    第一步:打开"控制面板"中的"管理工具" 第二步:点击"管理工具"然后双击"数据源(odbc)" 第三步:打开之后,点击 ...

  9. java中Log4J的使用笔记

    使用Log4J,程序员可以控制日志信息输送的目的地,包括控制台,文件,GUI组件和NT事件记录器,也可以控制每一条日志的输出格式,或通过定义每一条日志信息的级别,更加细致地控制日志的生成过程. Log ...

  10. 使用分析函数实现Oracle 10G提供的CONNECT_BY_ISLEAF和CONNECT_BY_ROOT的功能(转载)

    文章转载至:http://blog.csdn.net/wzy0623/article/details/1644049 如果,有侵犯您权益的地方,烦请及时的告知我,我会即刻停止侵权行为 Oracle 1 ...