在framework中打包xib 【转】

废话不多说,直接上图

1、Copy Bundle Resources 中加入相关xib

2、这里是重点,调用的时候不能直接写

[objc] view plaincopy

  1. [[NSBundle mainBundle] loadNibNamed:@"yourXibName" owner:nil options:nil]

而要加入framework中的路径,否则在调用的时候会报找不到xib文件(路径不同)的错,继而crash

[objc] view plaincopy

  1. [[NSBundle mainBundle] loadNibNamed:@"yourframework.framework/yourXibName" owner:nil options:nil]

3、编译完成后可以看到在framework目录下生成了对应的nib文件(xib编译之后生成nib,详情自己搜吧)

4、然后在项目配置的时候,需要把framework加入到Copy Bundle Resources 中,这一步也是重点

不过这样会增加整个包的大小

因此个人认为还是使用.a+bundle的形式更为妥当

另外如果在xib中直接加载了图片资源,则需要使用代码进行重新设置,因为无论是framework的形式还是.a+bundle的形式,资源目录都发生了改变,不再是从.app的根目录下去取资源,而是在.app目录下的bundle或者framework目录中取,因此加载资源的方式也需要进行更改

[objc] view plaincopy

  1. + (NSString *)pathForResource:(NSString *)name ofType:(NSString *)type {
  2. NSBundle *bkBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:YOUR_BUNDLE_NAME ofType:@"bundle"]];
  3. NSString* path = [bkBundle pathForResource:name ofType:type];
  4. return path;
  5. }

还有一个蛋疼的地方需要注意,在xcode6下,combine_hidpi_images的默认设置项为yes,需要手动改为no,否则bundle中的png图片经过编译打包会变成tiff的文件,进而导致对应图片找不到

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 20:53:43

在framework中打包xib 【转】的相关文章

在framework中打包xib

废话不多说,直接上图 1.Copy Bundle Resources 中加入相关xib 2.这里是重点,调用的时候不能直接写 [objc] view plaincopy [[NSBundle mainBundle] loadNibNamed:@"yourXibName" owner:nil options:nil] 而要加入framework中的路径,否则在调用的时候会报找不到xib文件(路径不同)的错,继而crash [objc] view plaincopy [[NSBundle 

Entity Framework中IQueryable, IEnumerable, IList的区别

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 使用工具追踪EF生成的SQL 使用Entity Framework等ORM框架的时候,SQL对于使用者来说是透明的,往往很多人也不关心ORM所生成的SQL,然而系统出现性能问题的时候就必须关注生成的SQL以发现问题所在. 使用过Toplink的

Entity Framework 教程——Entity Framework中的实体类型

Entity Framework中的实体类型 : 在之前的章节中我们介绍过从已有的数据库中创建EDM,它包含数据库中每个表所对应的实体.在EF 5.0/6.0中,存在POCO 实体和动态代理实体两种. POCO Entity (Plain Old CLR Object): POCO类是不依赖任何框架的类型,如同其他正常的一般类型,我们称之为"Plain Old CLR Objects"(这里不知道怎么翻译,普通的CLR对象?古老的CLR对象?大概意思就是没有什么特殊的对象吧). POC

Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中的spring web MVC模块

spring framework中的spring web MVC模块 1.概述 spring web mvc是spring框架中的一个模块 spring web mvc实现了web的MVC架构模式,可以被用于开发web网站 spring web mvc 实现web网站的原理,如下图: 2.使用spring web mvc开发web应用的步骤 step1:在自己的工程中引入spring web mvc模块 step2:配置spring web mvc模块 中的DispatcherServlet,告

在Entity Framework 中实现继承关系映射到数据库表

继承关系映射到数据库表中有多种方式: 第一种:TPH(table-per-hiaerachy) 每一层次一张表 (只有一张表) 仅使用名为父类的类型名的一张表,它包含了各个子类的所有属性信息,使用区分列(Disciriminator column)(通常内容为子类的类型名)来区分哪一行表示什么类型的数据. 第二种:TPT(Table-per-type) 每种类型都有一张表(父类及每个子类都有表) 父类.各子类各自都有一张表.父类的表中只有共同的数据,子类表中有子类特定的属性.TPT很像类的继承结

[JavaEE - JPA] 3. Spring Framework中的事务管理

前文讨论了事务划分(Transaction Demarcation)在EJB中是如何实现的,本文继续介绍在Spring Framework中是如何完成事务划分的. 我们已经知道了当采用Container事务类型的时候,事务划分主要有以下两种方案(参考这里): 使用JTA接口在应用中编码完成显式划分 在容器的帮助下完成自动划分 在使用JavaEE的EJB规范时,这两种方案分别被实现为BMT以及CMT,关于BMT和CMT在上一篇文章中有比较详尽的讨论(参考这里). 那么对于Spring Framew

在JAR中打包使用JAR库

不知大家在写Java程序的时候有没有这样的需求: 将引用其它第三方JAR库的项目打包成一个JAR文件运行.也就是说在你打包好的JAR文件中再包含那些你引用的第三方JAR文件,合成一个JAR包,这样只需在Windows下双击,或在Linux终端下输入 java -jar yourjarfile.jar即可方便运行.在最初一种普遍的做法是在打包的JAR文件中的META-INF/MANIFEST里使用Class-Path选项,像这样: Manifest-Version: 1.0 Created-By:

在Linq to sql 和 Entity framework 中使用lambda表达式实现left join

我们知道lambda表达式在Linq to sql 和 Entity framework 中使用join函数可以实现inner join,那么怎么才能在lambda表达式中实现left join呢?秘诀就是在join后面加上一个函数DefaultIfEmpty函数,实际上这个函数在linq中貌似也只有将inner join转换为left join的作用,示例如下 var joinResult = DB.Table1s.Join(DB.Table2s, a => a.id, b => b.id,

Entity Framework 中Decimal字段长度设置方法

在创建项目DbContext时,重写DbContext.OnModelCreating()方法:然后通过如下方法指定精度 1 protected override void OnModelCreating(DbModelBuilder modelBuilder) 2 { 3 modelBuilder.Entity<Product>().Property(product => product.Price).HasPrecision(18, 12); 4 } Entity Framework