weex-31-接入iOS完整步驟

前面基礎(chǔ)部分內(nèi)容已將講解的差不多了,接下來,我們講解一下原生部分的重點(diǎn)內(nèi)容

本節(jié)任務(wù)
學(xué)習(xí)如何配置在項(xiàng)目中使用WeexSDK

  • 第一步 通過在xcode 項(xiàng)目文件中創(chuàng)建一個(gè)Podfile文件,寫入下面的內(nèi)容

    # coding: utf-8
    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, "9.0"
    use_frameworks!
    
    target ‘你項(xiàng)目的名稱’ do
          pod 'WeexSDK'
          pod 'SDWebImage’,'~>3.8'
    end
    

如果你還有其他第三方庫,請(qǐng)各自進(jìn)行添加

  • 第二步 打開命令行工具,cd 進(jìn)入項(xiàng)目文件,使用pod install 命令進(jìn)行安裝依賴庫
63554DF0-CDE8-4EDA-A860-0283B72210C2.png

安裝好的工程目錄如下

E5A599B2-7371-48B6-91FA-7708EB001F0D.png
  • 第三步 引入安裝好的庫
7BD45B24-0D03-4CF3-A4A1-08E20A2EE85A.png
24B3B157-6FC5-4B36-9AAD-86DE2293A9F5.png
  • 第四步 實(shí)現(xiàn)圖片下載功能

由于WeexSDK 中沒有圖片下載功能,所以需要我們自己定義,其實(shí)也比較簡(jiǎn)單,創(chuàng)建一個(gè)類 實(shí)現(xiàn)兩個(gè)協(xié)議即可

WXImgLoaderDefaultImpl.h 文件

#import <Foundation/Foundation.h>
#import <WeexSDK/WeexSDK.h>
@interface WXImgLoaderDefaultImpl :     NSObject<WXImgLoaderProtocol, WXModuleProtocol>
@end

WXImgLoaderDefaultImpl.m文件

#import "WXImgLoaderDefaultImpl.h"
#import <SDWebImage/UIImageView+WebCache.h>
@interface WXImgLoaderDefaultImpl()
@property (strong, nonatomic) dispatch_queue_t ioQueue;
@end
@implementation WXImgLoaderDefaultImpl
- (id<WXImageOperationProtocol>)downloadImageWithURL:(NSString *)url imageFrame:(CGRect)imageFrame userInfo:(NSDictionary *)userInfo completed:(void(^)(UIImage *image,  NSError *error, BOOL finished))completedBlock
{
return (id<WXImageOperationProtocol>)[[SDWebImageManager sharedManager] downloadImageWithURL:[NSURL URLWithString:url] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {
} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
    if (completedBlock) {
        completedBlock(image, error, finished);
    }
}];
}
  • 第五步 在AppDelegate.m 文件中初始化weex 相關(guān)配置

1.首先是引用weexSDK

#import <WeexSDK/WeexSDK.h>

2.初始化

[WXSDKEngine initSDKEnvironment];
[WXSDKEngine registerHandler:[WXImgLoaderDefaultImpl new] withProtocol:@protocol(WXImgLoaderProtocol)];// 注冊(cè)圖片下載操作

以上就是基本的配置內(nèi)容,接下來就是如何加載渲染js文件的內(nèi)容

第六步 創(chuàng)建一個(gè)控制器(WeexViewController)

引入框架

#import <WeexSDK/WeexSDK.h>

第七步 創(chuàng)建weexSDKInstance 對(duì)象

 _instance = [[WXSDKInstance alloc] init];

第八步 給weexSDKInstance 對(duì)象設(shè)置一個(gè)視圖控制器,用來渲染視圖內(nèi)容

_instance.viewController = self;
_instance.frame = [UIScreen mainScreen].bounds; // 設(shè)置當(dāng)前布局范圍 這個(gè)很重要一定要設(shè)置 不然渲染的時(shí)候,可能會(huì)出現(xiàn)問題

第九步 當(dāng)WeexSDKInstance創(chuàng)建將節(jié)點(diǎn)都創(chuàng)建完成完成后,觸發(fā)下面的回調(diào)

 _instance.onCreate = ^(UIView *view) {}

這個(gè)方法中我們應(yīng)該做下面的事情

1.移除之前渲染的視圖
2.添加回調(diào)參數(shù)的視圖對(duì)象到視圖控制器的根視圖上

_instance.onCreate = ^(UIView *view) {
    [weakSelf.weexView removeFromSuperview];
    weakSelf.weexView = view;
    [weakSelf.view addSubview:weakSelf.weexView];
}

還有一個(gè)回調(diào)方法,這個(gè)方法是當(dāng)所有js文件的內(nèi)容都渲染成原生的視圖后,會(huì)觸發(fā)這個(gè)方法,兩個(gè)方法都能完成渲染的任務(wù),但是觸發(fā)的時(shí)機(jī)不一樣!

  _instance.renderFinish = ^(UIView *view) {
 [weakSelf.weexView removeFromSuperview];
    weakSelf.weexView = view;
    [weakSelf.view addSubview:weakSelf.weexView];
  };

第十步 開始渲染js文件

- (void)renderWithURL:(NSURL *)url;

注意,這個(gè)url可以是本地的url地址或者服務(wù)的url地址

下面補(bǔ)充一些內(nèi)容

渲染失敗會(huì)觸發(fā)下面的方法

 _instance.onFailed = ^(NSError *error) {}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弓坞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子车荔,更是在濱河造成了極大的恐慌渡冻,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評(píng)論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忧便,死亡現(xiàn)場(chǎng)離奇詭異族吻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)珠增,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門超歌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒂教,你說我怎么就攤上這事巍举。” “怎么了凝垛?”我有些...
    開封第一講書人閱讀 169,941評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵懊悯,是天一觀的道長(zhǎng)蜓谋。 經(jīng)常有香客問我,道長(zhǎng)炭分,這世上最難降的妖魔是什么桃焕? 我笑而不...
    開封第一講書人閱讀 60,294評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮捧毛,結(jié)果婚禮上观堂,老公的妹妹穿的比我還像新娘。我一直安慰自己呀忧,他們只是感情好师痕,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荐虐,像睡著了一般七兜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上福扬,一...
    開封第一講書人閱讀 52,874評(píng)論 1 314
  • 那天腕铸,我揣著相機(jī)與錄音,去河邊找鬼铛碑。 笑死狠裹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的汽烦。 我是一名探鬼主播涛菠,決...
    沈念sama閱讀 41,285評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼撇吞!你這毒婦竟也來了俗冻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,249評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤牍颈,失蹤者是張志新(化名)和其女友劉穎迄薄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煮岁,經(jīng)...
    沈念sama閱讀 46,760評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡讥蔽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了画机。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冶伞。...
    茶點(diǎn)故事閱讀 40,973評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖步氏,靈堂內(nèi)的尸體忽然破棺而出响禽,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,631評(píng)論 5 351
  • 正文 年R本政府宣布金抡,位于F島的核電站瀑焦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏梗肝。R本人自食惡果不足惜榛瓮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望巫击。 院中可真熱鬧禀晓,春花似錦、人聲如沸坝锰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顷级。三九已至凫乖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間弓颈,已是汗流浹背帽芽。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評(píng)論 1 275
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翔冀,地道東北人导街。 一個(gè)月前我還...
    沈念sama閱讀 49,431評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像纤子,于是被迫代替她去往敵國(guó)和親搬瑰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 翻譯自“Collection View Programming Guide for iOS” 0 關(guān)于iOS集合視...
    lakerszhy閱讀 3,881評(píng)論 1 22
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,171評(píng)論 30 470
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,348評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫控硼、插件泽论、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,128評(píng)論 4 61
  • 在這個(gè)陰大于晴的五月,我曾一度認(rèn)為這應(yīng)該就是我短短人生的一個(gè)低谷吧卡乾?所有意想不到的事接二連三的砸到我的頭上翼悴,我一...
    LSZJ大白菜閱讀 266評(píng)論 0 0