这三个都是系统初始化视图时会调用的方法。
initWithFrame主要用在非xib创建的视图
initWithCoder和awakeFromNib主要用在xib创建的视图 两个调用的先后顺序是initWithCoder->awakeFromNib.
initWithCoder和awakeFromNib这两个方法的区别:initWithCoder只是把子视图加载到视图层级中,但是还没有引用。如果要操作子视图的话,需要在awakeFromNib里面。比如
其中redView是视图中的子视图,可以看到在initWithCoder中无法获取位置信息,只有在awakeFromNib中可以获取到。