從iOS8開始Xcode能夠直接建立Framework工程了(👍),不再用建立靜態庫,而後再進行修改成Framework。另外在iOS7中使用Framework對於Xib和圖片的引用很不友善,在iOS8也提供了直接的API。git
新建工程,選擇Framework & Library -> Cocoa Touch Framework, 點擊Next,建立FrameworkiOS8的Framework工程。添加FrameworkViewController的class及Xib,再添加一個圖片的Bundle。詳見github的Demo.github
頭文件的暴露 在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
建立一個工程來測試下Framework:spa
新建工程FrameworkTest,將FramworkiOS8編譯生成的FrameworkiOS8.framework文件copy到FrameworkTest的目錄下。code
FrameworkTest工程引入FrameworkiOS8.framework。cdn
在Targets -> General -> Embedded Binaries 引入framework blog
在Build Phases -> Copy Bundle Resources 引入framework. 圖片
編寫調用Framework的測試代碼,引入#import <FrameworkiOS8/FrameworkiOS8.h>
的頭文件。
執行測試代碼
#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];
}];
}
複製代碼
直接加載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的打包,在線更新等等的功能,請參考其餘文獻。再也不重複描述。