iOS学习笔记

xib(自定义控件)

2016-04-26  本文已影响136人  修行小怪兽

1.创建xib文件,--(与你实例化那个控件的名字相一致)

if(self=[super init])(代码创建)
UIImageView *iconView= [[UIImageView alloc]init];
UILabel *laberView = [[UILabel alloc]init];
还有frame略去

2.父控件是与名字一样的那个类,加载的时候创建的是这个类型。这个类型里有模型数据属性。

UIImageView  *iconView = [(UIImageView  *)[self viewWithTag:5];
@property(nonatomic,strong)IBOutlet UIImageView  * iconView;
/** 名字控件 */
@property(nonatomic,strong)IBOutlet UILabel * lableView;

3.加载xib文件


    shopView *yhshopview = [[[NSBundle mainBundle] loadNibNamed:@"shopView" owner:nil options:nil] lastObject];
+(NSString *) xibName
    {
 return NSStringFromClass(self);

   } 
+(instancetype)shopView{
return [[[NSBundle mainBundle] loadNibNamed:  NSStringFromClass(self);
 owner:nil options:nil] lastObject];
}

4.为通过xib文件创建的控件初始化

 - 4.1 通过可视化在右边的边框里设置,缺点设置有限。
 - 4.2 一般想到用init方法例如:
-(instantype)initWithFrame:(CGRect)frame{
  if(self =[super initWithFrame:frame])
 {
    self.backgroundColor = [UIColor  redColor];
  }
   return self;
}

首先通过xib创建的控件是不会调用上面这个方法。
- 4.3 调用的是

  -(id)initWithCode:(NSCoder*) aDecoder{//这个是创建时,会调用。有些时候有些属性还不存在,所以不靠谱。
       if(self = [super initWithColor:aDecoder]){
          self.scrollView.backgroudColor = [UIColor redColor];
         
        }
       return self;
 }

最好调用awakeFromNib
```
- (void)awakeFromNib{
self.srollView.backgroundColor =[UIColor redColor];
}

    ```

5.自定义控件的时候 ——不管是通过xib/story和代码创建控件最好在awakeFromNib和initWithFrame:(CGRect)frame里都将初始化的代码加上去。这样可以不管是通过什么方式创建的代码都会被初始化。

上一篇下一篇

猜你喜欢

热点阅读