plist文件和xib文件的加载方法

2016-07-31  本文已影响106人  winlee

如果想要一个对象一初始化出来属性中就有某些值,那么我们就可以重写他的构造方法(init方法)

- (instancetepy) init{

     if(self=[super  init]){
              //初始化属性
              }
              return  self;
}

懒加载

为了防止重写控件初始化方法不成功,会采用下面这样的双保险写法只要才用这种写法,无论控件是如何创建的都会成功重写控件的初始化方法

/**
 *控件属性设置方法
 */
- (void) setup
{
    //初始化控件的那些属性
}
/**
 *重写控件initWithFrame:(CGRect)frame初始化方法,
 这个方法只要控件是通过代码创建的,那么就会在控件初始化时调用这个方法
 */
- (instancetype)initWithFrame:(CGRect)frame
{
    if (self=[super initWithFrame:frame]) {
        [self setup];
    }
    return self;
}
/**
 *重写控件awakeFromNib初始化方法,
 这个方法只要控件是通过Xib或storyboard创建的,那么就会在控件初始化时调用这个方法
 */
- (void)awakeFromNib
{
    [self setup];
}

通过代码创建自定义控件

通过Xib自定义控件

通过以上对比我们得出结论

plist文件和xib文件的加载方法

    NSString * file=[[NSBundle mainBundle] pathForResource:@"shops" ofType:@"plist"];
    //把plist文件中的数组给dictArray
    NSArray * dictArray=[NSArray arrayWithContentsOfFile:file];
    WLSubView *subView=[[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self)
    owner:nil options:nil] firstObject];

神奇三部曲给结构体赋值

    CGRect  tempFrame=self.imageView.frame;
    tempFrame.size.width=0;
    tempFrame.size.height=0;
    self.imageView.frame=tempFrame;
上一篇下一篇

猜你喜欢

热点阅读