xib 自定义视图

本文介绍了如何在iOS开发中使用XIB文件自定义视图,包括创建自定义视图类、绑定XIB文件、实例化和加载视图的方法,以及在其他ViewController中使用的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

~~~~我的生活,我的点点滴滴!!





常用的自定义view的方法有三种:


1、通过初始化的时候添加views


- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // add subviews
    }
    return self;
}




2、通过重载drawRect画出自己想要的视图


- (void)drawRect:(CGRect)rect 
{
	//......
}




3、通过xib


如果是布局复杂的话,使用上面1和2代码方式可以郁闷死人,又不能实时的看到视图效果,如果使用xib来布局,又TM的总要带个
UIViewController,关键是我TM根本不需要这货,所以我们要找一个不使用UIViewController当载体的xib方式来自定义视图。


a、在你的项目中新建个类,继承UIView,如果是继承UIView的是不能创建xib文件的,不要担心。





b、在单独新建个xib,xib的名字要与刚才新建的类的类名一样





c、在xib中选中View,然后更改他的class为你新建的类名,这样就和xib绑定在一起了,此后我们就可以连接IBoutlet和IBAction
到类中





d、把View的AutoLayout可以取消,然后更改一下Autosizing项





做完上面的操作后,如果要使用这个View和平常有点一同了,因为不在是我们来初始化和实例他了,我们需要使用下面的方式来实例、加载
他了


/**
 *  初始化代码:
 *
 *  @return [nibView objectAtIndex:0]
 */
+ (ZYCustomView *)initCustomView
{
    NSArray* nibView =  [[NSBundle mainBundle] loadNibNamed:@"ZYCustomView" owner:nil options:nil];
    return [nibView objectAtIndex:0];
}



如果你想要在自己的代码中添加或者修改自己的定义的成员变量的值,可以重载initWithCoder来操作


-(id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if(self)
    {
        //you init
    }
    return self;
}



iniWithCoder是在调用[[NSBundle mainBundle] loadNibNamed:@"ZYCustomView" owner:nil options:nil]时他自动调用的


或者有些自定义没有此函数重载,那就在awakeFromNib中处理(比如自定义tableviewcell时就没有iniWithCoder函数去重载)


e、使用方法:


//在其他ViewController中使用

/**
 *  在ViewController里引用
 */
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    ZYCustomView *test = [ZYCustomView initCustomView];
    test.backgroundColor = [UIColor yellowColor];
    test.clipsToBounds = YES;
    test.frame = CGRectMake(0, 20, 320, 200);
    test.lb1.text = @"我是第一行";
    [self.view addSubview:test];
}



这样就使用xib轻松完成了自定义View了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值