编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3)

一、首先将资源文件打包成bundle

由于bundle是静态的,所以可以将“iOS开发之静态库(三)—— 图片、界面xib等资源文件封装到.a静态库”中生成的“MyToolsWithAssetsA.bundle”文件直接拿过来使用。

二、创建静态框架

创建过程参考“iOS开发之静态库(四)—— 静态框架framework制作”,里面介绍非常详细。

静态库代码借用“iOS开发之静态库(三)—— 图片、界面xib等资源文件封装到.a静态库”中文件

代码就不做任何修改了,直接使用

//
// BundleTools.h
// MyToolsWithAssetsA
//
// Created by LZH on 14-8-15.
// Copyright (c) 2014年 LZH. All rights reserved.
// #import <Foundation/Foundation.h> #define BUNDLE_NAME @"MyToolsWithAssetsA" @interface BundleTools : NSObject + (NSString *)getBundlePath: (NSString *) assetName;
+ (NSBundle *)getBundle; @end
//
// BundleTools.m
// MyToolsWithAssetsA
//
// Created by LZH on 14-8-15.
// Copyright (c) 2014年 LZH. All rights reserved.
// #import "BundleTools.h" @implementation BundleTools + (NSBundle *)getBundle{ return [NSBundle bundleWithPath: [[NSBundle mainBundle] pathForResource: BUNDLE_NAME ofType: @"bundle"]];
} + (NSString *)getBundlePath: (NSString *) assetName{ NSBundle *myBundle = [BundleTools getBundle]; if (myBundle && assetName) { return [[myBundle resourcePath] stringByAppendingPathComponent: assetName];
} return nil;
} @end
//
// ViewController1.h
// MyToolsWithAssetsADemo
//
// Created by LZH on 14-8-15.
// Copyright (c) 2014年 LZH. All rights reserved.
// #import <UIKit/UIKit.h> @interface ViewController1 : UIViewController @property (strong, nonatomic) UIImageView *imageView; @end
//
// ViewController1.m
// MyToolsWithAssetsADemo
//
// Created by LZH on 14-8-15.
// Copyright (c) 2014年 LZH. All rights reserved.
// #import "ViewController1.h"
#import "BundleTools.h" #import <QuartzCore/QuartzCore.h> @interface ViewController1 () @end @implementation ViewController1
@synthesize imageView = _imageView; - (id)init{ NSBundle *myBundle = [BundleTools getBundle]; //self = [super initWithNibName: @"ViewController1" bundle: nil];
//从bundle中获取界面文件
self = [super initWithNibName: [NSString stringWithUTF8String: object_getClassName(self)] bundle: myBundle];
if (self) {
// Custom initialization
}
return self;
} - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
} - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib. _imageView = [[UIImageView alloc] initWithFrame: CGRectMake(50, 100, 220, 220)]; //_imageView.image = [UIImage imageNamed: @"0001.jpg"];
//从bundle中获取图片资源
_imageView.image = [UIImage imageWithContentsOfFile: [BundleTools getBundlePath: @"0001.jpg"]]; //给图片增加圆角
_imageView.layer.cornerRadius = 20;
_imageView.layer.masksToBounds = YES;
_imageView.layer.borderWidth = 3;
_imageView.layer.borderColor = [UIColor orangeColor].CGColor; [self.view addSubview: _imageView]; }
- (IBAction)backButton:(id)sender {
[self dismissViewControllerAnimated: YES completion: NULL];
} @end

加入源文件和头文件

修改配置选项

快捷键"Command + B"编译,分别生成真机版本和模拟器版本的framework

合并生成综合版本的framework

准备工作完成!

三、创建测试工程

创建单视图模板

工程命名

导入bundle资源包,此处的bundle就不修改名字了,修改了之后使用到它的地方都要修改,偷下懒...

导入framework静态框架

编写测试代码

//
// ViewController.m
// MyToolsWithAssetsFrameworkTest
//
// Created by LZH on 14-8-21.
// Copyright (c) 2014年 LZH. All rights reserved.
// #import "ViewController.h"
#import <MyToolsWithAssets/ViewController1.h> @interface ViewController () @end @implementation ViewController - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
} - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} //按钮响应函数
- (IBAction)buttonPressed:(id)sender { ViewController1 *view1 = [[ViewController1 alloc] init];
view1.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; //界面切换动画效果
[self presentViewController: view1 animated: YES completion: NULL];
} @end

快捷键"Command + R"运行

真机版本运行结果自己去试吧

模拟器版本运行结果

-- Over --

iOS开发之静态库(五)—— 图片、界面xib等资源文件封装到静态框架framework的更多相关文章

  1. iOS开发之静态库(三)—— 图片、界面xib等资源文件封装到.a静态库

    编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 新建工程:File -> Ne ...

  2. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

  3. iOS开发系列--无限循环的图片浏览器

    --UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件 ...

  4. iOS开发Swift篇—(五)元组类型

    iOS开发Swift篇—(五)元组类型 一.元组类型介绍 1.什么是元组类型 元组类型由 N个 任意类型的数据组成(N >= 0),组成元组类型的数据可以称为“元素” 示例: let posit ...

  5. iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)   前面我们介绍了StoryBoard这个新技术,和纯技术 ...

  6. IOS开发中UI编写方式——code vs. xib vs.StoryBoard

    最近接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问,就是应该如何制作UI界面.iOS应用是非常重视用户体验的,可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关 ...

  7. 目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”)。静态库是一个或者多个obj文件的打包

    前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”) ...

  8. iOS xcode9 framework静态库的创建以及xib和图片的使用记录

    来到了新公司,要开发的第一个项目据说可能要封成framework,可是我从来没自己做过framework呀!顿时开始发愤图强,赶紧恶补了起来.但是还是遇到了一些乱七八糟的情况,所以写个随笔记下来. 1 ...

  9. iOS开发之窥探UICollectionViewController(五) --一款炫酷的图片浏览组件

    本篇博客应该算的上CollectionView的高级应用了,从iOS开发之窥探UICollectionViewController(一)到今天的(五),可谓是由浅入深的窥探了一下UICollectio ...

随机推荐

  1. sql server 2008 express 使用ip登陆 error:40 错误:2

    如图 更好的方法是将IPAll中的TCP端口设置为1433.

  2. 《CSS3秘籍》(第三版)-读书笔记(2)

    第6章 文本格式化 1.  使用字体 字体font-family: 通用的字体样式: serif字体最适用于冗长的文字信息.这种字体使字母主笔画的结尾处会有一些细小的“足”. sans-serif字体 ...

  3. jQuery -> bind / live / delegate 的终结者 - on

    Bind()方法: 给元素绑定事件 形式: .bind(eventType[,eventData],handler(eventObject)) eventType,string类型,一个或多个DOM事 ...

  4. 使用 python 操作 redis

    1.安装pyredis (1)使用 # easy_install redis (2)直接编译安装 #wget https://pypi.python.org/packages/source/r/red ...

  5. SQL Server 【CTE + FOR XML PATH】使用笔记~

    CREATE FUNCTION [dbo].[Getxxxxxxxxx] ( @productCategoryId INT, @SplitChar varchar ) RETURNS NVARCHAR ...

  6. 基于TP框架的ThinkCMF,控制器display方法源码分析

    昨天在写代码的时候,看见写了无数次的模版渲染方法:$this->display(),突然很想弄清楚它是如何实现的. 今天不忙,就分析了一下. class TestController exten ...

  7. linux服务之X windows

    gnome display manager :gdm window manager :metacity x-server x-client [root@localhost gdm]# xlsclien ...

  8. ue4 SNew背后的逻辑

    ue4的ui库Slate体系非常庞大,即使是在创建对象这一小事上,也是相当复杂: SLATECORE_API TSharedRef<SWidget> SNullWidget::NullWi ...

  9. PHP查看当前端口号

    <?php echo "当前页面服务器IP地址为:"; echo $_SERVER["SERVER_ADDR"]; echo "<br / ...

  10. PHP 使用CURL

    CURL是一个非常强大的开源库,支持很多协议,包括HTTP.FTP.TELNET等,我们使用它来发送HTTP请求.它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS ...