iOS8 Framework使用加載xib及圖片

Cocoa Touch Framework

從iOS8開始Xcode能夠直接建立Framework工程了(👍),不再用建立靜態庫,而後再進行修改成Framework。另外在iOS7中使用Framework對於Xib和圖片的引用很不友善,在iOS8也提供了直接的API。git

1、建立Framwork工程

新建工程,選擇Framework & Library -> Cocoa Touch Framework, 點擊Next,建立FrameworkiOS8的Framework工程。添加FrameworkViewController的class及Xib,再添加一個圖片的Bundle。詳見github的Demo.github

FramworkiOS8

頭文件的暴露 在TARGETS -> Build Phases -> Headers 將FrameworkViewController.h從Project移到Public中。 bash

頭文件暴露

在FrameworkViewController.h中暴露了一個方法- (void)displayImageView; 用來顯示圖片,在FrameworkViewController.m實現測試

#pragma mark - Public Methods

- (void)displayImageView
{
    NSBundle *bundle = [NSBundle bundleForClass:[self class]];
    
    UIImage *image = [UIImage imageNamed:@"Images.bundle/LuFei" inBundle:bundle compatibleWithTraitCollection:nil];
    
    self.imageView.image = image;
}
複製代碼

加載指定的bundle中的PNG文件。ui

2、建立測試工程

建立一個工程來測試下Framework:spa

  1. 新建工程FrameworkTest,將FramworkiOS8編譯生成的FrameworkiOS8.framework文件copy到FrameworkTest的目錄下。code

  2. FrameworkTest工程引入FrameworkiOS8.framework。cdn

  3. 在Targets -> General -> Embedded Binaries 引入framework blog

    Framework

  4. 在Build Phases -> Copy Bundle Resources 引入framework. 圖片

    Copy Bundle Resources

  5. 編寫調用Framework的測試代碼,引入#import <FrameworkiOS8/FrameworkiOS8.h>的頭文件。

  6. 執行測試代碼

#pragma mark - Target Methods

- (IBAction)onClickFrameworkBtn:(id)sender
{
    NSBundle *bundle = [NSBundle bundleForClass:[FrameworkViewController class]];
    
    FrameworkViewController *frameworkVC = [[FrameworkViewController alloc] initWithNibName:@"FrameworkViewController" bundle:bundle];
    
    [self presentViewController:frameworkVC animated:YES completion:^{
        [frameworkVC displayImageView];
    }];
}
複製代碼
  1. 正確的顯示了Framework中Xib。 👍 ^_^
    結果顯示

直接加載Image 直接加載Framework中的圖片

- (IBAction)onClickImageBtn:(id)sender
{
    NSBundle *bundle = [NSBundle bundleForClass:[FrameworkViewController class]];
    
    UIImage *image = [UIImage imageNamed:@"Images.bundle/LuFei" inBundle:bundle compatibleWithTraitCollection:nil];
    
    [self.view setBackgroundColor:[UIColor colorWithPatternImage:image]];
}
複製代碼

顯示結果

獲取成功。

// END

關於Framework的打包,在線更新等等的功能,請參考其餘文獻。再也不重複描述。

相關文章
相關標籤/搜索