WWDC推出了SwiftUI、Combine,僅Swift可用~爲了能順利的也吃上SwiftUI,我也打算將本身的項目先從OC慢慢遷移到Swift,因此~一塊兒從混編開始!git
正常建立文件,語言選swift github
上一步,點完next,系統會提示以下彈框。點create Bridging Headerswift
#import "OCAndSwift-Swift.h" //項目名稱-Swift.h
複製代碼
點擊進去,能夠看到我剛剛建的文件的,以下所示,有初始化的方法,和我暴露在外面的方法~全部swift文件都會在這個文件裏面被「轉化」成OCbash
2) oc裏面調用swift,像調用oc同樣,徹底看不出來。ZTSwiftView *view = [[ZTSwiftView alloc]init];
[self.view addSubview:view];
__weak typeof(view) weakView = view;
//點了確認後執行此block
view.selectColorBlockSwift = ^(NSString * _Nonnull str) {
__strong typeof(weakView) strongView = weakView;
//將string賦值給view的button
[strongView reloadBtnTitleWithTitle:str];
};
複製代碼
其中reloadBtnTitleWithTitle方法是swift裏面的方法,swift方法想被oc調用,前面需帶objc,以下ui
@objc public func reloadBtnTitle(title:NSString){
confirmButton.backgroundColor = .white
confirmButton.setTitle(title as String, for: .normal)
}
複製代碼
let ocView = ZTOCView()
ocView.frame = CGRect(x: 0, y: 0, width: contentView.frame.width, height: contentView.frame.height)
contentView.addSubview(ocView)
weak var weakSelf = self
//點ocView中間的view後的block
ocView.changeColorBlock = {(color : UIColor?) -> Void in
weakSelf?.confirmButton.backgroundColor = color
weakSelf?.confirmButton.setTitle("肯定", for: .normal)
}
複製代碼
效果圖以下,是個有些醜的demo~spa
代碼 github.com/zttina/OCAn…