精华内容
下载资源
问答
  • XIB

    2018-06-07 16:57:00
    Xib加载的几种方法 - 简书 一天一点xib_10说说原理、优化方面的东西吧 - 简书 自定义View的封装和xib文件的使用详解|xiaoyou's blog 纯代码封装自定义View和XIB封装自定义View的区别 - CSDN博客 xib嵌套自定义...
    展开全文
  • xib

    2016-01-13 16:22:37
    xib(只负责创建控件,不实现功能) 创建xib文件的方式 1.在创建文件的时候,选择also create xib file 就会自动创建一个xib文件,文件和xib关联好了,直接用就可以了 2.需要在empty里创建一个xib文件,然后指定files ...

    xib(只负责创建控件,不实现功能)

    创建xib文件的方式  1.在创建文件的时候,选择also create xib file 就会自动创建一个xib文件,文件和xib关联好了,直接用就可以了 2.需要在empty里创建一个xib文件,然后指定files owner,然后向文件里拖拽一个view,最后指定owner的self.view是哪个view

    auto layout ----->横竖屏切换      size class --------->当前屏幕尺寸的适配

    //    // bundle如果写成nil,就是默认路径,默认路径就是[NSBundle mainbundle];
    //    ViewController *vc = [[ViewController alloc] initWithNibName:NSStringFromClass([ViewController class]) bundle:nil];
    //    self.window.rootViewController = vc;
    

    可以用nib创建tableView,使用自定义的cell,使用方法都很类似,只是需要先找到nib文件,然后在文件里找到当前需要注册的cell

      // 先找到nib文件
        UINib *nib = [UINib nibWithNibName:NSStringFromClass([MovieCell class]) bundle:nil];
        // 在文件里找到当前需要注册的cell
        [self.myTableView registerNib:nib forCellReuseIdentifier:@"MovieCell"];
        [self createData];
    

    如果是单独创建的xib文件,想要显示的话

      NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:nil options:nil];
    //    NSLog(@"%@", arr);
    

    xib创建的视图,放在一个数组中

      
     <span style="font-size:18px;">   UILabel *label = arr[0];
        [self.view addSubview:label];
        label.center = CGPointMake(150, 500);
        
        UIImageView *imageView = arr[1];
        [self.view addSubview:imageView];</span>
    


    展开全文
  • Xib

    2016-01-30 10:36:34
    1.1. 什么是xibxib就是一种文件的后缀,我们要使用Interface Builder工具对它进行编辑。xib的作用就是描绘页面中的布局,可以让我们及时看到效果,并且也比代码要方便快速的多。 当我们使用MVC模式去编写项目的...

    1.1. 什么是xib?

    这里写图片描述

    xib就是一种文件的后缀,我们要使用Interface Builder工具对它进行编辑。xib的作用就是描绘页面中的布局,可以让我们及时看到效果,并且也比代码要方便快速的多。
    当我们使用MVC模式去编写项目的时候,创建了一个UIViewController,它就是MVC中的C,还需要创建一个View,表示MVC中的V。之前我们的做法都是继承UIView类,创建一个自定义View,然后把所有有关视图的代码都写到自定义View中,虽然把Controller类进行了瘦身,但是View中的代码依然看起来让人头疼,每添加一个小控件都需要好几行的代码,一个简单的登录页面,就需要一大段的代码,很烦人。不过有了xib,我们做一个登录页面出来,不仅不需要写代码了,还可以通过拖线的方式把属性、方法都生成,非常的方便。

    1.2. nib又是什么东东?

    项目进行编译之后,xib文件会保存到我们的Bundle中,被编译成了nib文件,

    这里写图片描述

    简单来说,xib就是编译之前的格式,nib就是编译之后的格式。至于你到底叫它xib还是nib,都随你喜欢啦

    1.3. 如何使用 1.3.1 xib文件的创建

    当我们创建视图控制器的时候,我们把这个选项选中,

    这里写图片描述
    这样我们就可以创建一个自带xib文件的视图控制器了。
    如果说创建视图控制器的时候忘记勾选了,也不要着急,我们可以单独创建一个xib文件,

    这里写图片描述

    单独创建xib文件的时候,名字最好和它所对应的控制器相同。
    注意,虽然你单独创建出来了xib文件,但是需要注意的是,我们还要将xib和控制器类进行关联,
    在Class中输入xib对应的控制器的类名,
    这里写图片描述

    除了这个,还有:在File’s Owner上右击,会出现黑色的HUD,找到view,右侧有个小圈圈,鼠标放到上面会变成小加号,拖动到xib上。

    这里写图片描述

    NOTE:
    自己创建的xib与控制器关联需要两步:

    将xib与自己的控制器类进行关联
    xib的view与控制器的view进行关联

    1.3.2 控件的添加

    使用方式就是大家经常所说的托控件,只需要将右下角的控件拖到我们页面中:
    这里写图片描述

    我们把控件都摆放好位置之后,运行会发现并不是居中的,这是因为我们Size Classes的关系,大家暂时先不用管,你要做的就是把所有的控件往左边靠,然后摆个大概的位置就好了。

    1.3.3 控件与属性或者事件的绑定

    当我们摆放好控件的位置之后,就可以运行看效果了,这个时候效果都出现没有问题,但是我们会发现点击的时候没有作用,那是因为我们还没有给控件绑定事件,那么,该如何做呢?
    打开Assistant Editor编辑模式,也就是同时可以显示两个类的文件的模式,左侧显示我们的xib文件,右侧显示xib文件对应的控制器。
    正式开始拖线,选中要生成属性的控件,按住Control键,拖动到右侧,就会出现如下效果:

    这里写图片描述

    松开手后,你会看到这样一个框:

    这里写图片描述

    connection中选择默认的Outlet,意思是生成一个属性。然后在Name中输入属性的名字,其它地方不用修改,选择,Connect按钮。这样我们就将控件与控制器中的一个属性关联起来了。

    这里写图片描述

    拖动按钮的事件几乎相同,选中一个button,然后按住Control键进行拖动,刚刚connection中不再是选择Outlet,而是选择Action,Name的位置填写事件方法的名称,type的位置填写生成方法的参数类型,其它默认,然后点击Connect按钮,进行事件的创建。

    创建好了事件之后,我们去实现事件方法,效果很简单:点击按钮,显示输入的用户名和密码:

    #pragma mark - 按钮事件
    #pragma mark 登录
    - (IBAction)loginButtonAction:(UIButton *)sender
    {
        NSString *messageStr = [NSString stringWithFormat:@"%@\n%@", _userNameTextField.text, _passwordTextField.text];
    
        UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"提示" message:messageStr preferredStyle:UIAlertControllerStyleAlert];
    
        UIAlertAction *cancelAlertAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
            NSLog(@"取消按钮");
        }];
        [alertC addAction:cancelAlertAction];
    
        [self showDetailViewController:alertC sender:nil];
    }

    1.4. 这个东西有什么优点?

    xib让我们创建应用程序的页面更加的快速,节省了更多的时间
    快速的帮助我们创建出来了属性和方法,还是节省了很多的时间
    xib比较简洁,只描述了当前页面的一些内容
    所见即所得,比代码直观

    展开全文
  • view.xib的说明 View的custom cass是关联自身的 File’s owner是关联任意类的 方式一.xibxib 用File’s owner 方式二.代码加载,不向某个控制器关联控件 用View的custom class 一.代码加载XIB 1).只有xib文件 ...

    view.xib的说明
    View的custom cass是关联自身的 File’s owner是关联任意类的

    方式一.xib拖xib 用File’s owner
    方式二.代码加载,不向某个控制器关联控件 用View的custom class

    一.代码加载XIB


    1).只有xib文件
    1.只有View1.xib文件
    2.File’s Owner 和View1的Custom class都未设置

    加载View的方法

     

     UIView *v1 =  [[[NSBundle mainBundle] 
    loadNibNamed:@"View1" owner:nil options:nil] lastObject];
    

    2).有xib****( .h 和.m )
    ****文件
    1.有View11.xib View11.h View11.m文件
    2.File’s Owner 和View1的Custom class都未设置

    加载View的方法

     

    UIView *v11 =  [[[NSBundle mainBundle] 
    loadNibNamed:@"View11" owner:nil options:nil] lastObject];
    

    3).有xib文件,设置了File’s Owner
    1.有View2.xib文件
    2.A.File’s Owner 为ViewController (File’s Owner关联ViewController.xib,可以向 VIewController.h或ViewCOntroller.m拖线)
    B. 或者设置为UIViewController

    3.View2的Custom class未设置

    A种情况 某个ViewController的View
    ViewControler加载View方法

     

        UIView *v2 =  [[[NSBundle mainBundle] 
    loadNibNamed:@"View2" owner:self options:nil] lastObject];
    

    B种情况 公共的
    加载View方法

     

     UIView *v2 = [[UIViewController alloc] initWithNibName:
    @"View2" bundle:nil].view;
    
    1. .有xib( .h 和.m ) 文件,设置了File’s Owner 和 View的Custom Class**

    1.有View3.xib文件 View3.h View3.m
    2.File’s Owner设置为 A.ViewContoller
    或者 B.UIViewController)
    3.View3的Custom class 设置为 VIew3 (xib可以向 View3.h或View3.m拖线)

    A种情况 某个ViewController的View
    ViewControler加载View方法

     

       UIView *v3 =  [[[NSBundle mainBundle] loadNibNamed:
    @"View3" owner:self options:nil] lastObject];
    

    B种情况 公共的 需要将view和File’s Owner连线
    加载View方法

     

      UIView *v3 = [[UIViewController alloc] initWithNibName:
    @"View3" bundle:nil].view;
    

    注:
    当新建AViewController类时默认生成
    1.AViewController.h 和 AViewController.m文件
    2.AViewController.xib
    即可 [[AViewController alloc] initWithNibName:@"" bundle:nil]

    5).有xib( .h 和.m ) 文件,设置了File’s Owner
    1.有View3.xib文件 View3.h View3.m
    2.File’s Owner(File’s Owner可以设置为A.ViewContoller 或者 B.UIViewController)

    其他controller使用代码:[UINib nibWithNibName:@"CycleScrollView"bundle:nil]

    XIB拖XIB


    一 .通过父View的Custom Class (XIB拖XIB) 有缺陷,不用

    ViewController
    加载xib时候会触发一些方法,如:

     

    - (id)initWithCoder:(NSCoder *)aDecoder 
    - (id)awakeAfterUsingCoder:(NSCoder*)aDecoder 
    

    可以在-awakeAfterUsingCoder:(NSCoder*)aDecoder里通过 nibName 获取xib实例并加以替换

    1.新建CustomView.h
    CustomView.m
    CustomView.xib

    2.设置
    CustomView.xib里父View
    的Custom Class为
    CustomView 设置其他Xib或StoryBoard里
    View的 Custom Class为CustomView

    3.在 CustomView
    .m 文件里附上代码
    - (id) awakeAfterUsingCoder:(NSCoder)aDecoder {
    BOOL theThingThatGotLoadedWasJustAPlaceholder = ([[self subviews] count] == 0);
    if (theThingThatGotLoadedWasJustAPlaceholder) {
    SubView
    theRealThing = [[self class] loadFromNibNoOwner];

     

            // pass properties through 
            [self copyUIPropertiesTo:theRealThing]; 
             
            //auto layout 
            self.translatesAutoresizingMaskIntoConstraints = NO; 
            theRealThing.translatesAutoresizingMaskIntoConstraints = NO; 
           
            return theRealThing; 
        } 
        return self; 
    } 
     
    -(void) copyUIPropertiesTo:(UIView *)view 
    { 
        // reflection did not work to get those lists, so I hardcoded them 
        // any suggestions are welcome here 
         
        NSArray *properties = 
        [NSArray arrayWithObjects: @"frame",@"bounds", @"center", @"transform", @"contentScaleFactor", @"multipleTouchEnabled", @"exclusiveTouch", @"autoresizesSubviews", @"autoresizingMask", @"clipsToBounds", @"backgroundColor", @"alpha", @"opaque", @"clearsContextBeforeDrawing", @"hidden", @"contentMode", @"contentStretch", nil]; 
         
        // some getters have 'is' prefix 
        NSArray *getters = 
        [NSArray arrayWithObjects: @"frame", @"bounds", @"center", @"transform", @"contentScaleFactor", @"isMultipleTouchEnabled", @"isExclusiveTouch", @"autoresizesSubviews", @"autoresizingMask", @"clipsToBounds", @"backgroundColor", @"alpha", @"isOpaque", @"clearsContextBeforeDrawing", @"isHidden", @"contentMode", @"contentStretch", nil]; 
         
        for (int i=0; i<[properties count]; i++) 
        { 
            NSString * propertyName = [properties objectAtIndex:i]; 
            NSString * getter = [getters objectAtIndex:i]; 
             
            SEL getPropertySelector = NSSelectorFromString(getter); 
             
            NSString *setterSelectorName = 
            [propertyName stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:[[propertyName substringToIndex:1] capitalizedString]]; 
             
            setterSelectorName = [NSString stringWithFormat:@"set%@:", setterSelectorName]; 
             
            SEL setPropertySelector = NSSelectorFromString(setterSelectorName); 
             
            if ([self respondsToSelector:getPropertySelector] && [view respondsToSelector:setPropertySelector]) 
            { 
                NSObject * propertyValue = [self valueForKey:propertyName]; 
                 
                [view setValue:propertyValue forKey:propertyName]; 
            } 
        }     
    } 
    

    **二 .通过file’s owner的Custom Class (XIB拖XIB)
    **
    通过重载 initWithCoder方法来实现,因为通过 xib 来创建一个对象会调用到这个方法,所以我们需要在这个方法里做一些处理,把这个 CustomView的 xib中的内容加载进来,这时同样是需要通过代码来来加载

    1.新建CustomView.h
    CustomView.m
    CustomView.xib

    2.设置
    CustomView.xib里file’s owner的Custom Class为 CustomView 设置其他Xib或StoryBoard里View的 Custom Class为CustomView
    3.在 CustomView
    .m 文件里附上代码
    - (id)initWithCoder:(NSCoder *)aDecoder
    {
    if (self = [super initWithCoder:aDecoder]) {
    UIView *containerView = [[[UINib nibWithNibName:@"CustomView" bundle:nil] instantiateWithOwner:self options:nil] objectAtIndex:0];
    CGRect newFrame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
    containerView.frame = newFrame;
    [self addSubview:containerView];
    }
    return self;
    }



     

    展开全文
  • xib桥接xib

    2015-03-06 10:20:02
    xib的动态桥接 ... Builder(以下都简称IB)来构建程序UI,包括storyboard和xib,相比代码更可视和易于修改,尤其在使用...但用了这么久IB之后发现一个很大的槽点,就是IB间很难嵌套混用,比如一个xib中的view是另
  • xib 相关

    2018-08-18 02:19:00
    1. xib相关(一) —— 基本知识(一)2. xib相关(二) —— 文件冲突问题(一)3. xib相关(三) —— xib右侧标签介绍(一)4. xib相关(四) —— 连线问题(一)5. xib相关(五) —— 利用layout进行约束之...
  • Scrollerview xib

    2017-03-16 17:14:29
    scrollview xib
  • iOS 自定义xib并在xib中使用 新建一个CustomView并为它创建一个CustomView.xib 选择CustomView.xib的File’s Owner,把Customer Class指定为CustomView。 修改CustomView.m文件如下: #import "CustomView.h" @...
  • xib2Storyboard - 将Xcode .xib转换为.storyboard文件的工具
  • xib简记

    2016-06-18 00:39:23
    xib文件主要用来描述一块局部的UI界面,在开发阶段面向开发者的为xib文件,当装载入手机,xib文件就回转为nib文件。
  • swift scrollview xib 用法

    2019-02-14 18:21:16
    iOS 开发里在swift 中,xib 的使用方法
  • xib总结

    2015-12-31 23:07:13
    1,用xib描述需要的空间。 2,创建对应得类,并将xib的class更改为此类。 3,将xib里面的空间拖拽至所建类的属性声明处,作为类的属性。 4,声明并实现创建xib的方法,使用[ [ NSBundel mainBundel ] ...
  • iOS在Xib加载自定义Xib视图

    千次阅读 2016-10-30 22:02:25
    iOS在Xib加载自定义Xib视图 最近都在做Android项目的开发,许久没有捣腾iOS开发了,今天接到一个旧项目功能的开发,为了快速开发出来决定使用Xib或者Storyboard来实现,虽然很简单,但是发现许久没用,手都生了,...
  • xib 学习

    2015-01-12 09:38:55
    XIB文件学习 重点:当XIB文件复杂了,我们对应的数据赋予就复杂了,那什么时候赋值成了问题,init方法不一定会调用,那什么时候一定会调用 当一个对象重xib中创建初始化完毕的时候就会调用一次 1、awakeFromNib 这...
  • xib 使用

    2015-11-17 00:07:05
    Xib文件是一个轻量级的用来描述局部界面的文件,它与StoryBoard类似,都是使用Interface Bulider工具进行编辑。但是StoryBoard是重量级的,它是用来描述整个软件的多个界面,并且能够展示多个页面之间的跳转关系。在...
  • xib创建UIViewController

    2020-02-26 22:48:58
    创建方式同UIViewController: ...xib文件与Storyboard区别:xib单纯的是view,而Storyboard里面是一个个view controller。 #import "SceneDelegate.h" #import "XibViewController.h" @interface SceneDelegat...
  • 貌似不支持xib

    2021-01-12 07:28:41
    但是如果用xib的话,将xib文件添加进copy bundles resources, Xcode在编译成功后,同时也是install之前的时候一定会报错:The file “xxxapp” couldn’t be opened because you don’t have ...
  • 使用XIB实现嵌套自定义XIB视图

    千次阅读 2015-11-02 14:52:38
    在进行 iOS 开发的过程中,对于一些复杂的界面,我们可以通过 Interface ...解释一下就是,我们使用 IB 自定义了一个 View ,然后又在其他的 xib 文件中使用了这个 View ,那么这就是所谓的嵌套自定义视图
  • XIB学习

    2014-12-29 13:51:17
    XIB学习 重点 /** 除去图片资源,其他的所有资源都需要bundle来读取 */ //1、读取文件 NSBundle * bundle = [NSBundle mainBundle]; //2、读取xib文件,创建xib中描述的所有对象,并且按顺序放到数组中返回 ...
  • UIViewController添加Xib

    2019-07-24 14:20:00
    1.有的时候创建UIViewContollrer类时,忘记创建了xib,此时就要手动创建一个xib 2.我们首先新建一个类HOTestViewController在创建xib文件的时候,文件名尽量与其类名一直,一是方便查看,二是,系统加载的时候好像...
  • 自定义XIB View里面添加其他自定义Xib View 上周五七秒没事写swfit项目的时候,遇到的问题: 在商城订单评论界面,有服务评论、发货速度评论、回收价格评论,都是星星评论。 星星界面 不用看大家都知道...
  • xib使用

    2014-05-23 22:06:00
    xib和storyboard都可以建立应用程序的视图。他们的主要区别在于,xib用于创建应用程序的局部视图,storyboard用于创建应用程序的整体视图。 xib是storyboard的前身。 xib文件的加载,可以通过Bundle完成。 例如:...
  • xib转nib脚本.zip

    2019-06-05 18:07:09
    这是一个ios开发相关的,将xib文件转为nib文件的轻便脚本文件,大家来试试~!主要用在组件化开发中使用xib的情况,需要将xib文件转为nib
  • xib基本使用

    2020-01-17 14:57:38
    Xib和storyBorad区别和共同点 共同点: 1.都用来描述软件界面 2.都用Interface Builder工具来编译 3.本质都是转换成代码去创建控件 不同点: 1.Xib是轻量级的,用来描述局部的UI界面 2.Storyboard是重量级的,用来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,131
精华内容 4,052
关键字:

xib