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


    编译环境: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 --

     

     

     

  • 相关阅读:
    屏蔽/捕获并输出错误
    物理机转Hyper-V虚拟机
    Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
    IDRAC 固件升级操:
    网卡启动安装dell服务器OS
    服务器指定网卡进行备份数据避免影响业务口
    【转载】用户通过WEB方式更改AD域帐户密码
    Windows运维之Windows8.1-KB2999226-x64安装提示 此更新不适用你的计算机
    Exchange 退信550 5.1.11 RESOLVER.ADR.ExRecipNotFound
    优酷kux视频转MP4
  • 原文地址:https://www.cnblogs.com/mylizh/p/3971563.html
Copyright © 2020-2023  润新知