iOS使用xib自定义UIView

作者: hx永恒之恋 | 来源:发表于2016-09-08 21:39 被阅读4560次

    一般自定义View代码方式

      //1-在初始化的时候添加 子Views
    - (id)initWithFrame:(CGRect)frame  
    {  
         self = [super initWithFrame:frame];  
         if (self) {  
         // add subviews  
         }  
     return self;  
     }  
     //2-还有种 是自己画。 重载   
    - (void)drawRect:(CGRect)rect {
    
    }
    

    有些情况下,我们发现有一些界面上的控件是可以复用的。
    如果每次都拷贝这些控件过去,就是比较麻烦。所以,就用一个xib文件,创建一个view,把要复用的控件,放在里面组成一个view,然后在其他的ViewController里面引用就行了。

    这样会方便很多。

    第一步:创建一个SingleViewApplication,命名为“xib作为子控件复用”,在项目里New File,选择Cocoa Touch Class,命名为"AAView",点击Next,如图1所示:

    1418092637819667.png

    第二步:创建一个View,在项目里面New File,选择View,点击Next,如图2所示。命名为”AAView“,点击Create,如图3所示:

    1418092656274965.png 1418092668724274.png

    第三步:选中AAView.xib,点击View,更改Custom Class为“AAView”(即刚才所创建的AAView.h和AAView.m文件),如图4所示。如果要修改View的大小,可以设置属性Size为 “Freeform”。

    1418092716559300.png

    第四步: 在View里面添加4个Label,修改Text,如图5所示。为"小王"和"21"两个Label添加Outlets,按住Control拖到AAView.h文件,分别命名,如图6所示:

    1418092746154763.png 1418092758280833.png

    第五步:现在就是如何把这个View作为子控件加载到其他界面了,打开ViewController.m文件,把AAView.h” import进来,然后在ViewDidLoad里面写入以下代码:

    AAView *aaView = [[[NSBundle mainBundle] loadNibNamed:@"AAView" owner:self options:nil] lastObject]; // lastObject 可改为 firstObject,该数组只有一个元素,写哪个都行,看个人习惯。
    
    aaView.lbName.text = @"小明";
    
    aaView.lbAge.text = @"25";
    
    [self.view addSubview:aaView];
    

    运行程序,结果如图7所示:

    1418092820304809.jpg

    至此,可以看见姓名和年龄都改变了,成功完成把xib文件作为一个子控件使用。如果你觉得位置不满意,可以更改创建的View的Frame属性,改变大小和位置。

    有时候你有很多复杂的控件组成一个复杂的组件,然后进行复用,这就是一个很好的办法。

    相关文章

      网友评论

      • e189258d9973:请把lastobject改成firstobject,别害人
        令__狐冲:有毛病吧?
        hx永恒之恋:我找了别人的一些关于 xib 的文章,你可以参考一下,希望对你的有帮助
        http://www.jianshu.com/p/31dd2d6b16aa

        http://blog.csdn.net/VAN_MR/article/details/49668521
        hx永恒之恋:你好!首先感谢你的意见,但是我想解释一下:由于 [[NSBundle mainBundle] loadNibNamed:@"AAView" owner:self options:nil] 这个数组只有一个元素所以 firstObject 与 lastObject 都是同一个元素,无论写哪个都没有错,只是个人习惯问题。另外,麻烦你以后提意见时注意措辞,大家都是为了相互学习,那块地方写错了,提出来改一改,有谁不会粗心错个字什么的。我不知道你这“害人”之说从何得来,听着让人很不舒服,望博友以后能注意自己的措辞,如果我给你带来了麻烦,望你见谅!两不相识,何必伤害,无心之举,何必介意。

      本文标题:iOS使用xib自定义UIView

      本文链接:https://www.haomeiwen.com/subject/pfxeettx.html