标签:
1 import UIKit 2 3 4 5 class SwiftView: UIView { 6 7 8 9 init(frame: CGRect) { 10 11 super.init(frame: frame) 12 13 self.backgroundColor = UIColor.redColor() 14 15 16 17 var ocView = OCView(frame:CGRectMake(0,0,50,50)) 18 19 self.addSubview(ocView) 20 21 } 22 23 24 25 } 26 27
然后在MyOCView里调用SwiftView
1 @implementation MyOCView 2 3 - (instancetype)initWithFrame:(CGRect)frame 4 5 { 6 7 self = [super initWithFrame:frame]; 8 9 if (self) { 10 11 self.backgroundColor = [UIColor grayColor]; 12 13 SwiftView *sView = [[SwiftView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 14 15 [self addSubview:sView]; 16 17 } 18 19 return self; 20 21 22 23 }
这时候编译是会出错的,因为不能互相找到路径,这个时候要在工程MyMixed的build settings-swift compiler-objective-才 bridging header里加入头文件路径MyMixed/OCView.h让SwiftView找到OCView.h
然后在OCView.m里加入
//工程名加上编译时会生成的一个名子,这样就可以使用swift文件
#import "MyMixed/MyMixed-Swift.h"
就能通过编译,这个时候混合框架就制作完成了
再重新建一个工程叫MixPro这里我们使用swift语言
然后add files to“。。。”导入框架的工程文件(当然也可以直接导入编译好的framework),然后编译一下框架工程,看是否能编译通过,然后在MixPro工程的build phases里点击link binary with libraries 添加MyMixed.framework,这个时候框架添加完成,编译看是否通过
然后在viewcontroller里添加代码
1 import UIKit 2 3 import MyMixed 4 5 6 7 class ViewController: UIViewController { 8 9 10 11 override func viewDidLoad() { 12 13 super.viewDidLoad() 14 15 // Do any additional setup after loading the view, typically from a nib. 16 17 18 19 var swiftView = SwiftView(frame:CGRect(x:20, y:20, width:100, height:100)) 20 21 self.view.addSubview(swiftView) 22 23 24 25 var myocView = MyOCView(frame:CGRectMake(50,140,200,200)) 26 27 self.view.addSubview(myocView) 28 29 } 30 31 32 33 override func didReceiveMemoryWarning() { 34 35 super.didReceiveMemoryWarning() 36 37 // Dispose of any resources that can be recreated. 38 39 } 40 41 42 43 }
// In this header, you should import all the public headers of your framework using statements like #import
不难明白如果要这个framework的其他文件被外部工程看见,我们需要#import 这个头文件,但是这个一定是PublicHeader.h所以我们点击MyMixed工程的build phases里的Headers,可以看见public里只有MyMixed.h,我们要想在外部使用MyOCView.h就要把它从project里拖到public里,然后重新编译,错误消除编译通过
附上一张效果图
iOS开发——实用篇&Swift与Object-C混编之框架
标签:
原文地址:http://www.cnblogs.com/iCocos/p/4545541.html