Swift語言中,有很多封裝類並沒有,如果需要使用到,就需要橋接OC語言中的類,這時候就需要使用橋接頭文件,一下是使用的步驟:
創建一個Swift項目Demo,然後新建一個OC語言的文件
如圖:
創建一個BgImgView的類,選擇對應的Object-C語言,點擊Next按鈕
會彈出提示框,詢問是否需要配置一個橋接頭文件,點擊創建按鈕(第三個)
這個時候會自動生成一個橋接頭文件
現在開始在OC文件中添加需要使用的相關代碼
.h文件
{ id _targetT; SEL _selT; } //不帶參數的行數 -(void)testT; //待返回參數 -(NSString *)nameStr; //添加一個點擊事件方法,模仿按鈕的點擊 -(void)addTarget:(id)targetTT withSelector:(SEL)selecTT;
.m文件
//不帶參數的行數 -(void)testT { NSLog(@"調用了testT方法。。。。"); } //待返回參數 -(NSString *)nameStr { return @"好好學習,天天向上"; } //添加一個點擊事件方法,模仿按鈕的點擊 -(void)addTarget:(id)targetTT withSelector:(SEL)selecTT { _targetT = targetTT; _selT = selecTT; //是否交互 self.userInteractionEnabled = YES; } -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { if (_targetT) { [_targetT performSelector:_selT withObject:self]; } }
需要的代碼寫完後,需要在橋接文件中添加頭文件,這裡只寫需要使用到的OC頭文件即可,不需要把所有的OC文件都寫上
然後在 .Swift 文件中使用,
//創建一個BgImgView對象 let bgImgV = BgImgView.init(frame:CGRectMake(10, 100, 200, 100)); bgImgV.image = UIImage.init(named: "22.jpg"); //調用方法 bgImgV.testT(); //返回參數方法 let nameStr = bgImgV.nameStr(); NSLog("輸出了。。。%@", nameStr); //添加點擊事件 bgImgV.addTarget(self, withSelector: #selector(ViewController.imgClick)); self.view.addSubview(bgImgV); } func imgClick(imgV:BgImgView){ NSLog("點擊了圖片。。。。。"); }
最後輸出效果: