.nib ios 文件_nib 文件 打开 ios - CSDN
  • 如何打开Nib文件

    2019-04-10 17:44:01
    原文地址::... 相关文章 1、iOSnib文件分析----https://www.jianshu.com/p/eb53ccf28680 2、iOS 使用nib文件(一)----https://blog.csdn.net/u011367651/article/details/47292...

    原文地址::https://blog.csdn.net/ani_di/article/details/9186979

     

    相关文章

    1、iOS中nib文件分析----https://www.jianshu.com/p/eb53ccf28680

    2、iOS 使用nib文件(一)----https://blog.csdn.net/u011367651/article/details/47292981?utm_source=blogxgwz1

    3、IOS 使用XIB 自定义View----https://blog.csdn.net/li6185377/article/details/8131042

     

    如何打开Nib文件
    有段时间没有灌水,今天分享一个小技巧。

    nib文件是Cocoa App的界面资源,代码中一般用xib代替了nib,因为这样方便版本管理。发布出去的仍然是nib,而且是编译后的nib,这种文件直接用xcode是不能被打开的。

    可以手工修改一下nib就可以打开了。修改方法:

    下载Compiled Nib Opener.nib.zip,解压
    右键Compiled Nib Opener.nib -> “Show package content"
    用需要打开的nib替换keyedobjects.nib
    返回,双击打开Compiled Nib Opener.nib
    嫌麻烦用这个工具
     

    展开全文
  • iOS 使用nib文件(一)

    2015-09-12 13:54:07
    使用xib文件,我们可以轻松实现所见即所得的效果。总结一下个人使用xib文件过程中遇到的问题。

    首先是加载nib文件的方法:

    - (NSArray *)loadNibNamed:(NSString *)name owner:(id)owner options:(NSDictionary *)options;

    Return Value

    An array containing the top-level objects in the nib file. The array does not contain references to the File’s Owner or any proxy objects; it contains only those objects that were instantiated when the nib file was unarchived. You should retain either the returned array or the objects it contains manually to prevent the nib file objects from being released prematurely. 

    Discussion

    You can use this method to load user interfaces and make the objects available to your code. During the loading process, this method unarchives each object, initializes it, sets its properties to their configured values, and reestablishes any connections to other objects. (To establish outlet connections, this method uses the setValue:forKey: method, which may cause the object in the outlet to be retained automatically.) For detailed information about the nib-loading process, see Resource Programming Guide.

    该方法的返回值是一个数组,数组不包含对File‘s Owner或者任何代理对象的引用,仅仅包含了nib文件在unarchived时被初始化的对象。你应该retain这个数组或者数组中对象以避免对象被提前释放。

    你可以使用该方法来加载UI,并使UI中包含的对象在你的代码中是可用的。在加载过程中,该方法unarchived每一个对象,初始化、设置属性被计算出来的值,同时重新建立和其他对象建立的connections。为了建立outlet connections,该方法使用了setValue:forKey:,可能会导致对象被自动retain.

    nib文件就是存储了归档对象数据的文件,通过对该类型文件进行解档,我们可以恢复被归档的对象。

    #import <UIKit/UIKit.h>
    
    @interface TestNibView : UIView
    
    @property (weak, nonatomic) IBOutlet UIButton *button;
    +(instancetype)testNibView;
    
    @end

    #import "TestNibView.h"
    
    @implementation TestNibView
    
    +(instancetype)testNibView
    {
        return [[[NSBundle mainBundle]loadNibNamed:@"TestNibView" owner:self options:nil] firstObject];
    }
    
    
    -(instancetype)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self)
        {
            
        }
        return self;
    }
    
    -(id)initWithCoder:(NSCoder *)aDecoder
    {
        self = [super initWithCoder:aDecoder];
        if (self)
        {
            DLog(@"%@",self.button);
        }
        return self;
    }
    
    -(void)awakeFromNib
    {
        [super awakeFromNib];
        DLog(@"%@",self.button);
    }
    
    @end
    <span style="font-family: Arial, Helvetica, sans-serif;">+(instancetype)testNibView;//只能使用代码创建</span>
    
    

    TestNibView.xib的内容如下图:

    为什么这种方法只能通过代码创建,而不能像其他的控件一样,拖到其他的view上呢,下次再说。

    上面这种方法在我们使用xib自定义cell,为cell关联自定类时最常用。

    对于UITableViewCell和UICollectionViewCell,我们可以直接使用xib生成cell。

         <pre name="code" class="objc">UIXXCell * cell <span style="font-family: Arial, Helvetica, sans-serif;"> =  [[[NSBundle mainBundle]loadNibNamed:@"CellPractice" owner:self options:nil] firstObject];</span>
    
    

    - (NSArray *)loadNibNamed:(NSString *)name owner:(id)owner options:(NSDictionary *)options;中options参数在文档中也有说明,只是很少用到。

    在TestNibView.m中还有几个方法,是下次要研究的内容。

    展开全文
  • 找了半天··大致整理了一下 stackOverFlow这里有两个办法 ...分别是用XCODE3和打开源码的方式修改xib文件,不过目前为止发现在XCODE4中以源码方式打开NIB文件会CRUSH 还有一个是如何讲一个已经创建好的iphon

    找了半天··大致整理了一下

    stackOverFlow这里有两个办法

    http://stackoverflow.com/questions/2488280/converting-iphone-xib-to-ipad-xib

    分别是用XCODE3和打开源码的方式修改xib文件,不过目前为止发现在XCODE4中以源码方式打开NIB文件会CRUSH

    还有一个是如何讲一个已经创建好的iphone工程改为universal或者ipad

    其实很简单,只要将target中的devicefamily(devices)改一下就OK了

    展开全文
  • 今天,看了关于nib的一些文章,自己也试了下,...当您将nib文件载入应用程序时,nib装载代码会将文件中的内容转化为应用程序可以操作的真正对象。通过这个机制,nib文件省去了用代码创建那些对象的工作。 Interface

           今天,看了关于nib的一些文章,自己也试了下,总结一下。

    首先nib,文件是一种数据文件,用于存储可在应用程序需要时使用的一些冻结的对象。大多数情况下,应用程序使用nib文件来存储构成用户界面的窗口和视图。当您将nib文件载入应用程序时,nib装载代码会将文件中的内容转化为应用程序可以操作的真正对象。通过这个机制,nib文件省去了用代码创建那些对象的工作。

            Interface Builder是一个可视化的设计环境,您可以用它来创建nib文件。您可以将标准对象(比如UIKit框架中提供的窗口和视图)和Xcode工程中的定制对象放到nib文件中。在Interface Builder中创建视图层次相当简单,只需要对视图对象进行简单拖拽就可以了。您也可以通过查看器窗口来配置每个对象的属性,以及通过创建对象间的连接来定义它们在运行时的关系。您所做的改变最终都会作为nib文件的一部分存储到磁盘上。

            在运行时,当您需要nib文件中包含的对象时,就将nib文件装载到程序中。典型情况下,装载nib文件的时机是当用户界面发生变化和需要在屏幕上显示某些新视图的时候。如果您的应用程序使用视图控制器,则视图控制器会自动处理nib文件的装载过程,当然,您也可以通过NSBundle类的方法自行装载。(转自:http://blog.csdn.net/linux_zkf)

             上面大概介绍了nib文件,下面就来研究下红色区域的自动处理。

    现在,通常使用代码和IB结合的方式来处理视图控制器,那么写法通常是A.h、A.m、A.xib。这里A.xib中的File's Owner需要是A类,并且我们会把A.view与A.xib中的相关联(这里强调一下,当生成A对象的时候会自动寻找A.nib(装载同名的nib文件),也就是说A.xib改个名字之后。例C.xib,会生成C.nib,但是C.nib不会在运行时装载到程序中,即使A.view与C.xib关联)。

    这样当我们创建一个A对象的时候:

         A *AController = [[Aalloc]initWithXXX:数据];

        执行顺序:   

    1. A的 (id)initWithXXX:

    2. A的[superinit]

    3. A的- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil(即使A没有xib也会调用)

    4. A super的- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    5. A的  (id)initWithXXX:

    6. A的  (void)loadView://这里如果loadView被重写则无法正常装载nib文件,即使用super;

    - (void)loadView 

    {

        [superloadView];//在重写loadView后 7和8都不会执行,因为没有装载nib文件

    }

    7. A subView的 - (id)initWithCoder:(NSCoder *)aDecoder

    8. A subView的 - (void)awakeFromNib
    9. 最后进行A的  
    - (void)viewDidLoad


    下面是百度的一个比较准的解释:

    第一、initWithNibName这个方法是在controller的类在IB中创建,但是通过Xcode实例化controller的时候用的. 
    第二、initWithCoder 是一个类在IB中创建但在xocde中被实例化时被调用的.比如,通过IB创建一个controller的nib文件,然后在xcode中通过 initWithNibName来实例化这个controller,那么这个controller的initWithCoder会被调用.或者是一个view的nib文件,类似方法创建时调用initWithCoder 
    第三、awakeFromNib 

    当.nib文件被加载的时候,会发送一个awakeFromNib的消息到.nib文件中的每个对象,每个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作。也就是说通过nib文件创建view对象时执行awakeFromNib
    第四、关于 initWithNibName 和 loadNibNamed 的区别和联系 : 

    关于 initWithNibName 和 loadNibNamed 的区别和联系。之所以要把这两者来一起讲,我觉的我也有点困惑,到底用那种?其实真正搞清楚了他们之间的差别,就不会这么迷惘了。因为这两个方法,根本就不是一路货色。 
    既然,是要说明这2个方法,那就着重将区别吧。 
    但是第一步,还是要罗嗦一下,他们的联系:可以使用此方法加载用户界面(xib文件)到我们的代码中,这样,可以通过操作这个加载进来的(xib)对象,来操作xib文件内容。 
    下面进入主题,谈区别: 
    1. ShowViewController的initWithNibName方法 
    ShowViewController * showMessage = [[ShowViewController alloc] 
    initWithNibName:@"ShowViewController" bundle:nil]; 
    self.showViewController = showMessage; 
    [showMessage release]; 
    2.VideoCellController的loadNibNamed方法 
    NSArray * nib = [[NSBundle mainBundle] loadNibNamed:@"Save3ViewController" 
    owner:self options:nil] ; 
    总结: 
    只看他们初始化,那可能感觉是一样的。但是如果,打开分别看xib的关系的时候,才恍然大悟,原来他们的集成类都不一样。 
    1. initWithNibName要加载的xib的类为我们定义的视图控制器类 (这个就是UIViewController的方法)
    2.加载方式不同 
    initWithNibName方法:是延迟加载,这个View上的控件是 nil 的,只有到 需要显示时,才会不是 nil 
    loadNibNamed方法:即时加载,用该方法加载的xib对象中的各个元素都已经存在。 

    (认真理解这句帮规:when using loadNibNamed:owner:options:, the File's Owner should be NSObject, the main view should be your class type, and all outlets should be hooked up to the view, not the File's Owner.) 

    第五、initWithCoder和initWithFrame的区别 

    initWithCoder 是当从nib文件中加载对象的时候会调用,比如你的view来自nib那么就会调用这个view的这个函数。(由框架调用) 
    initWithFrame (是由用户调用,来初始化对象的) 

    The init method that gets used depends on how the view is created. It can be explicitly created using initWithFrame or it can be created by loading a nib. In that case, the initWithCoder method gets called when the view is loaded from the nib. There are other init methods for subclasses (like UITableViewController has initWithStyle), so you have to be sure which one is being called. 


    展开全文
  • 在早期的iOS的界面设计中,主要使用nib来进行界面设计,与现在的使用storyboard略有不同。客观来说,使用nib比storyboard稍稍麻烦,跳转需要写几行代码。整个程序的流程也显得不那么清晰。但是作为现在仍旧保持的...

          在早期的iOS的界面设计中,主要使用nib来进行界面设计,与现在的使用storyboard略有不同。客观来说,使用nib比storyboard稍稍麻烦,跳转需要写几行代码。整个程序的流程也显得不那么清晰。但是作为现在仍旧保持的技术,我们也来学习一下。具体实现步骤如下:

    (1)在当前文件中新建一个界面:File-->New-->File.选择Cocoa Touch Class。输入文件名,继承自UIViewController。注意:勾选下面的“Also create XIB file”,然后就创建成功。

    创建成功后,在Supporting Files 中有一个.swift文件和一个.xib文件。前者是控制代码,后者是界面设计文件。如图:


    (2)在Main.storyboard中设计第一个界面,添加一个按钮,并按住command,鼠标拖动到ViewController.swift中,自动创建一个@IBAction修饰的方法。如图:


    (3)同上操作方法,在第二个界面的xib文件下拖拽一个按钮,作为返回按钮。同样创建一个点击事件。


    (4)在第一个页面的点击事件中加入如下代码:


    (5)在第二个页面的按钮点击事件中加入如下代码,表示返回到前一个界面。


    (6)运行程序,页面能成功跳转并返回。这里就不截图了。


          总结:iOS中的界面跳转可以使用storyboard中直接可视化拖拽的方式,也可以通过nib界面设计,然后代码实现的方式,总有一款适合你。


    github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

    展开全文
  • ios 将Xib 编为 Nib文件

    2017-07-28 14:03:37
    打包静态库时,xib不会被编译成nib,而如果你直接在主项目中使用xib,编译的时候就会把xib编程nib。因此需要我们手动把xib编程nib。指令如下:ibtool --errors --warnings --output-format human-readable-text --...
  • nib文件笔记

    2014-11-18 19:30:18
    1.nib文件描述了界面元素及其之间的关系等内容,同时也描述了一些非图形化对象,应用中跟图形界面相关的或是管理图形界面的一些对象,nib file’s owner是指创建或加载nib文件时,从代码中传递过去的对象,这是程序...
  •  Xamarin.iOS中的UITableView方法和OC或者swift中的UITableView方法一直,不一样的就是书写的语法了,相信学过的一看就会明白,所以这里我只是展示使用,不会过多解释某个方法是用来干什么的。 1.创建UITableView ...
  • iOS开发中的.m文件编译后,是什么格式的文件?可以被反编译吗?.swift文件被编译后,是什么格式的文件?可以被反编译吗?
  • Nib文件

    2012-09-17 17:35:59
    什么是Nib文件  Nib文件是保存由Interface Builder创建的对象及对象间关系的一种资源文档。Nib文件中的对象包括:接口对象(可视化对象--窗口,视图,控件,菜单...;非可视化对象--窗口控制器,视图控制器,程序委托...
  • 最初只有nib文件,后来将其更名为xib,但大家一直沿袭nib这个叫法(即称xib文件nib文件),所以目前为止,nib等同于xib。xib文件采用xml格式。 前文已提到故事板是用来替代xib的,那么两者除后缀名外,还存在哪些...
  • 我们经常可以听到nib开发或xib开发之类的术语,但两者有什么区别呢?其实两者说的意思差不多。 nib是3.0版本以前的产物,在终端下我们可以看到,NIB其实是一个文件夹,里面有可执行的二进制文件; xib是一个基于xml...
  • [iOS架构-静态库.framework手动打包及脚本化打包(5)](https://blog.csdn.net/shifang07/article/details/89372877)中介绍了.framework的脚本化打包,虽然在[iOS架构-静态库.a打包之资源文件打包成bundle(4)]...
  • 在使用nib文件做界面开发的过程中,加载nib文件后,由于设置了outlet和delegate,出现了一些未能及时释放的引用和retain循环,最后结果当然可想而知,dealloc没有走到,内存一路高歌走上去了。 所以在使用的时候...
  • Xcode 之nib文件

    2014-02-16 13:44:39
    iOS 开发中,不可避免的肯定会接触到interface builder,也就是IB窗口。这儿IB就是使用nib文件储存GUI资源。  这儿所说的nib文件是一种数据文件,用于存储可在应用程序需要时使用的一些“冻结”对象。大多数情况...
  • ios创建.bundle文件

    2019-12-20 10:47:23
    Bundle文件可以理解为一个资源包,用于存储图片、音频、文本、nib文件等,方便在其他项目中引用包内的资源 1.新建一个(Bundle)工程: 2.设置参数 3 测试 ...
  • iOS多个nib文件关联同一个类 一.什么情况下使用多个nib文件关联同一个类 最常用的情况就是,可以实现同一个类的多个界面的初始化,因为可以使用initWithNibName方法来调用不同的xib文件,实现同类不同的界面。 二.几...
  • 在新建项目完成后,会出现这么几个文件 Info.plist、InfoPlist.strings、.pch文件。 其中Info.plist现版本Xcode新建项目后还存在,其余两个文件现在已经找不到了。 ——————————————————————...
  • 我们iOS项目打包后生成的.app文件到底长什么样呢?我们来看一下: 首先在打包好的文件夹下找到.app文件,然后解压: 上图是解压后的文件目录:Symbols文件夹下有一个.symbols的符号表文件文件作用暂不清楚,...
  • Xib与Nib区别联系

    2019-09-29 15:04:01
    3.InterfaceBuilder界面编译器交互环境可视化,xib与nib为界面编译器的图形界面设计文档。(InterfaceBuilderXML设计文档/InterfaceBuilderNextStep设计文档) 4.xib(InterfaceBuilderXML图形文档)属于XML...
1 2 3 4 5 ... 20
收藏数 14,149
精华内容 5,659
关键字:

.nib ios 文件