美文网首页IOS XIBiOS开发程序员
[iOS UI] 如何通过xib创建自定义UIView并在xib

[iOS UI] 如何通过xib创建自定义UIView并在xib

作者: 段子周 | 来源:发表于2016-04-13 11:56 被阅读8200次

    需求描述

    因为我的项目正处于UI设计还没有定稿,变化的可能性较大阶段,当然要使用autolayout,所以我想要定制UIView并从xib中加载界面,而且在UIViewController的xib文件中使用前面的定制UIView,各种google,SO,多少不满足需求或者有错误,所以记录一篇。

    步骤

    • 从模板创建一个Single View Application
    • 新建一个User Interface -> View,命名为ViewController.xib
    • 选择ViewController.xibFile's Owner,在identity inspector里修改Custom Class为ViewController 如图custom_name.png;在connections inspector里连接view到编辑区域xib的View上 如图link_view.png;
      custom_name.png
      link_view.png
    • 修改AppDelegate.m里的代码如下:
     - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        
        _window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
        _window.rootViewController = [[UIViewController alloc]initWithNibName:@"ViewController" bundle:nil];
        [_window makeKeyAndVisible];
        
        return YES;
    }
    

    运行,确认程序已经加载你自定义的xib而不是走默认的storyboard

    • 新建UIView的子类CustomizedView并且为它创建一个View为CustomizedView.xib
    • 选择CustomizedView.xibFile's Owner[这里注意,一定是File's Owner,而不是View本身],把Customer Class指定为CustomizedView,类似图custom_name.png。
    • 修改CustomizedView.m文件如下:
    #import "CustomizedView.h"
    @implementation CustomizedView
    -(instancetype)initWithCoder:(NSCoder *)aDecoder {
        
        if (self = [super initWithCoder:aDecoder]) {
            UIView *view = [[[NSBundle mainBundle]loadNibNamed:@"CustomizedView" owner:self options:nil]objectAtIndex:0];
            [self addSubview:view];
        }
        return self;
    }
    @end
    
    • 选择ViewController.xib,从右下角object libary里拖动一个UIView到ViewController.xibView的子view,并修改新建view的名称为CustomizedView,如图subview.png

      subview.png
    • 运行,看到效果。工程下载

    相关文章

      网友评论

        本文标题:[iOS UI] 如何通过xib创建自定义UIView并在xib

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