http://git-wip-us.apache.org/repos/asf/incubator-weex-site/blob/d332a30e/cn/references/advanced/extend-to-ios.html
----------------------------------------------------------------------
diff --git a/cn/references/advanced/extend-to-ios.html
b/cn/references/advanced/extend-to-ios.html
deleted file mode 100644
index 5a72a35..0000000
--- a/cn/references/advanced/extend-to-ios.html
+++ /dev/null
@@ -1,1511 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="utf-8">
-
- <title>iOS æ©å± | Weex</title>
- <meta name="viewport" content="width=device-width, initial-scale=1,
maximum-scale=1">
- <meta name="description" content="注æWeex æææ´é²ç» JS çå
ç½®
module æ component API é½æ¯å®å
¨åå¯æ§çï¼
å®ä»¬ä¸ä¼å»è®¿é®ç³»ç»çç§æ API ï¼ä¹ä¸ä¼å»åä»»ä½ runtime
ä¸ç hack æ´ä¸ä¼å»æ¹ååºç¨åæçåè½å®ä½ã
å¦æéè¦æ©å±èªå®ä¹ç module æè
component ï¼ä¸å®æ³¨æä¸è¦å°
OC ç runtime æ´é²ç» JS ï¼ ä¸è¦å°ä¸äºè¯¸å¦ dlopen()ï¼ dlsym()">
-<meta property="og:type" content="website">
-<meta property="og:title" content="iOS æ©å±">
-<meta property="og:url"
content="https://weex-project.io/cn/references/advanced/extend-to-ios.html">
-<meta property="og:site_name" content="Weex">
-<meta property="og:description" content="注æWeex æææ´é²ç» JS çå
ç½® module æ component API é½æ¯å®å
¨åå¯æ§çï¼
å®ä»¬ä¸ä¼å»è®¿é®ç³»ç»çç§æ API ï¼ä¹ä¸ä¼å»åä»»ä½ runtime
ä¸ç hack æ´ä¸ä¼å»æ¹ååºç¨åæçåè½å®ä½ã
å¦æéè¦æ©å±èªå®ä¹ç module æè
component ï¼ä¸å®æ³¨æä¸è¦å°
OC ç runtime æ´é²ç» JS ï¼ ä¸è¦å°ä¸äºè¯¸å¦ dlopen()ï¼ dlsym()">
-<meta property="og:updated_time" content="2017-05-17T07:17:21.000Z">
-<meta name="twitter:card" content="summary">
-<meta name="twitter:title" content="iOS æ©å±">
-<meta name="twitter:description" content="注æWeex æææ´é²ç» JS çå
ç½® module æ component API é½æ¯å®å
¨åå¯æ§çï¼
å®ä»¬ä¸ä¼å»è®¿é®ç³»ç»çç§æ API ï¼ä¹ä¸ä¼å»åä»»ä½ runtime
ä¸ç hack æ´ä¸ä¼å»æ¹ååºç¨åæçåè½å®ä½ã
å¦æéè¦æ©å±èªå®ä¹ç module æè
component ï¼ä¸å®æ³¨æä¸è¦å°
OC ç runtime æ´é²ç» JS ï¼ ä¸è¦å°ä¸äºè¯¸å¦ dlopen()ï¼ dlsym()">
-
- <link rel="alternate" href="/atom.xml" title="Weex"
type="application/atom+xml">
-
-
- <link rel="icon"
href="//gw.alicdn.com/tps/TB1XNqxPXXXXXcSXVXXXXXXXXXX-64-63.png">
-
-
- <link href="//fonts.googleapis.com/css?family=Source+Code+Pro"
rel="stylesheet" type="text/css">
-
- <link rel="stylesheet" href="/css/style.css">
- <link rel="stylesheet" href="/css/swiper.min.css">
-</head>
-
-<body id="references" class="lang-cn">
-
- <script>
- window.PAGE_TYPE = "references";
- window.ROOT = "/"
- </script>
- <header id="header">
- <div class="navbar">
- <a id="logo" href="/cn/">
- <img src="//img.alicdn.com/tps/TB1zBLaPXXXXXXeXXXXXXXXXXXX-121-59.svg" />
- </a>
- <div class="main-nav">
- <ul class="links">
- <li><a href="/cn/guide">æç¨</a></li>
- <li><a href="/cn/references">æå</a></li>
- <li class="dropdown">
- <a href="javascript:;">åè</a>
- <ul class="dropdown-menu subnav">
- <li>
- <a href="/cn/faq.html">FAQ</a>
- </li>
- <li>
- <a href="/cn/releasenote.html">çæ¬è¯´æ</a>
- </li>
- </ul>
- </li>
- <li class="dropdown">
- <a href="javascript:;">å·¥å
·åæå¡</a>
- <ul class="dropdown-menu subnav">
- <li>
- <a href="/cn/playground.html">Playground</a>
- </li>
- <li>
- <a href="/cn/guide/tools/toolkit.html">Weex-toolkit</a>
- </li>
- <li>
- <a href="http://dotwe.org" target="_blank">Code Snippets</a>
- </li>
- <li>
- <a href="https://market.dotwe.org" target="_blank">Market</a>
- </li>
- </ul>
- </li>
- </ul>
- <ul class="info">
- <li><a href="https://github.com/apache/incubator-weex/"
target="_blank"><span class="btn-github iconfont icon-github"></span></a></li>
- </ul>
- <ul class="tools">
- <li>
- <div class="search">
- <form id="search-form" class="search-form"> <!-- æç´¢æ¡ç¸å
³ -->
- <input type="text" id="search-input-header" name="q" results="0"
class="form-control search-input" autocomplete="off" autocorrect="off"/>
- <span class="iconfont icon-search"></span>
- </form>
- <div class="results-panel">
- </div>
-</div>
- </li>
- <li>
- <div class="dropdown select-lang">
- <a href="javascript:;" class="dropdown-toggle">
- Language
- <span class="caret"></span>
- </a>
- <ul class="dropdown-menu pick-lang">
- <li>
- <a href="/references/advanced/extend-to-ios.html"
data-lang="en">English</a>
- </li>
- <li>
- <a href="/cn/references/advanced/extend-to-ios.html"
data-lang="zh-cn">ä¸æ</a>
- </li>
- </ul>
- </div>
- </li>
- <!--<li></li>-->
- </ul>
- </div>
- </div>
- <div id="mobile-nav">
- <a id="logo" href="/cn/">
- <img src="//img.alicdn.com/tps/TB1zBLaPXXXXXXeXXXXXXXXXXXX-121-59.svg" />
- </a>
- <a class="btn-menu"><span class="iconfont icon-nav"></span></a>
- </div>
-</header>
-
- <div id="sidebar" class="">
- <div class="sidebar-menu">
-
- <div class="search">
- <form id="search-form" class="search-form"> <!-- æç´¢æ¡ç¸å
³ -->
- <input type="text" id="search-input-sidebar" name="q" results="0"
class="form-control search-input" autocomplete="off" autocorrect="off"/>
- <span class="iconfont icon-search"></span>
- </form>
- <div class="results-panel">
- </div>
-</div>
-
-
-<div class="doc-nav-version">
- <select class="versionBtn" stype="/cn/references">
-
- <option value="2v" selected>v2.x</option>
- <option value="1v">v1.x</option>
-
- </select>
-</div>
-<div class="summary">
- <h2 class="part-title">
-
- æå
-
- </h2>
- <ul class="doc-summary">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/index.html"
class="sidebar-link ">éç¨ç¹æ§</a></h3>
-
- <ul class="chapter">
-
- <li>
- <a href="/cn/references/ios-apis.html" class="sidebar-link
">iOS APIs</a>
- </li>
-
- <li>
- <a href="/cn/references/android-apis.html" class="sidebar-link
">Android APIs</a>
- </li>
-
- <li>
- <a href="/cn/references/html5-apis.html" class="sidebar-link
">HTML5 APIs</a>
- </li>
-
- <li>
- <a href="/cn/references/jsfm-apis.html" class="sidebar-link
">JS Framework APIs</a>
- </li>
-
- <li>
- <a href="/cn/references/common-style.html" class="sidebar-link
">éç¨æ ·å¼</a>
- </li>
-
- <li>
- <a href="/cn/references/text-style.html" class="sidebar-link
">ææ¬æ ·å¼</a>
- </li>
-
- <li>
- <a href="/cn/references/color-names.html" class="sidebar-link
">é¢è²å称å表</a>
- </li>
-
- <li>
- <a href="/cn/references/gesture.html" class="sidebar-link
">æå¿</a>
- </li>
-
- <li>
- <a href="/cn/references/path.html" class="sidebar-link ">Path
(è±)</a>
- </li>
-
- </ul>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a
href="/cn/references/components/index.html" class="sidebar-link ">å
建ç»ä»¶</a></h3>
-
- <ul class="chapter">
-
- <li>
- <a href="/cn/references/components/a.html" class="sidebar-link
"><a></a>
- </li>
-
- <li>
- <a href="/cn/references/components/indicator.html"
class="sidebar-link "><indicator></a>
- </li>
-
- <li>
- <a href="/cn/references/components/slider.html"
class="sidebar-link "><slider></a>
- </li>
-
- <li>
- <a href="/cn/references/components/switch.html"
class="sidebar-link "><switch></a>
- </li>
-
- <li>
- <a href="/cn/references/components/text.html"
class="sidebar-link "><text></a>
- </li>
-
- <li>
- <a href="/cn/references/components/textarea.html"
class="sidebar-link "><textarea></a>
- </li>
-
- <li>
- <a href="/cn/references/components/video.html"
class="sidebar-link "><video></a>
- </li>
-
- <li>
- <a href="/cn/references/components/web.html"
class="sidebar-link "><web></a>
- </li>
-
- <li>
- <a href="/cn/references/components/div.html"
class="sidebar-link "><div></a>
- </li>
-
- <li>
- <a href="/cn/references/components/image.html"
class="sidebar-link "><image></a>
- </li>
-
- <li>
- <a href="/cn/references/components/list.html"
class="sidebar-link "><list></a>
- </li>
-
- <li>
- <a href="/cn/references/components/input.html"
class="sidebar-link "><input></a>
- </li>
-
- <li>
- <a href="/cn/references/components/waterfall.html"
class="sidebar-link "><waterfall></a>
- </li>
-
- <li>
- <a href="/cn/references/components/cell.html"
class="sidebar-link "><cell></a>
- </li>
-
- <li>
- <a href="/cn/references/components/loading.html"
class="sidebar-link "><loading></a>
- </li>
-
- <li>
- <a href="/cn/references/components/refresh.html"
class="sidebar-link "><refresh></a>
- </li>
-
- <li>
- <a href="/cn/references/components/scroller.html"
class="sidebar-link "><scroller></a>
- </li>
-
- </ul>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/modules/index.html"
class="sidebar-link ">å
建模å</a></h3>
-
- <ul class="chapter">
-
- <li>
- <a href="/cn/references/modules/animation.html"
class="sidebar-link ">animation</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/websocket.html"
class="sidebar-link ">WebSocket</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/picker.html"
class="sidebar-link ">picker</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/clipboard.html"
class="sidebar-link ">clipboard</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/dom.html" class="sidebar-link
">dom</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/modal.html"
class="sidebar-link ">modal</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/navigator.html"
class="sidebar-link ">navigator</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/storage.html"
class="sidebar-link ">storage</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/stream.html"
class="sidebar-link ">stream</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/webview.html"
class="sidebar-link ">webview</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/globalevent.html"
class="sidebar-link ">globalEvent</a>
- </li>
-
- </ul>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/unit.html"
class="sidebar-link ">CSS åä½</a></h3>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/common-event.html"
class="sidebar-link ">éç¨äºä»¶</a></h3>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/native-dom-api.html"
class="sidebar-link ">Native DOM APIs</a></h3>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/weex-variable.html"
class="sidebar-link ">Weex å®ä¾åé</a></h3>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/web-standards.html"
class="sidebar-link ">Web æ å</a></h3>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a
href="/cn/references/js-service/index.html" class="sidebar-link ">JS
Service</a></h3>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/vue/index.html"
class="sidebar-link ">Vue</a></h3>
-
- <ul class="chapter">
-
- <li>
- <a href="/cn/references/vue/difference-with-web.html"
class="sidebar-link ">Vue 2.x å¨ Weex å Web ä¸çå·®å¼</a>
- </li>
-
- <li>
- <a href="/cn/references/vue/difference-of-vuex.html"
class="sidebar-link ">ä½¿ç¨ Vuex å vue-router</a>
- </li>
-
- </ul>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/advanced/index.html"
class="sidebar-link ">é«é¶ç¥è¯</a></h3>
-
- <ul class="chapter">
-
- <li>
- <a href="/cn/references/advanced/extend-to-ios.html"
class="sidebar-link current ">iOS æ©å±</a>
- </li>
-
- <li>
- <a href="/cn/references/advanced/extend-to-android.html"
class="sidebar-link ">Android æ©å±</a>
- </li>
-
- <li>
- <a href="/cn/references/advanced/extend-to-html5.html"
class="sidebar-link ">HTML5 æ©å±</a>
- </li>
-
- <li>
- <a href="/cn/references/advanced/extend-jsfm.html"
class="sidebar-link ">æå± JS framework</a>
- </li>
-
- <li>
- <a
href="/cn/references/advanced/integrate-devtool-to-android.html"
class="sidebar-link ">éæ Devtools å° Android</a>
- </li>
-
- <li>
- <a
href="/cn/references/advanced/integrate-devtool-to-ios.html"
class="sidebar-link ">éæ Devtools å° iOS</a>
- </li>
-
- </ul>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a
href="/cn/references/platform-difference.html" class="sidebar-link ">Weex å
Web å¹³å°çå·®å¼</a></h3>
-
- <ul class="chapter">
-
- <li>
- <a href="/cn/references/migration/index.html"
class="sidebar-link ">è¿ç§»</a>
- </li>
-
- <li>
- <a href="/cn/references/migration/migration-from-weex.html"
class="sidebar-link ">å¦ä½å°åæ Weex 项ç®æ¹é æ Vue çæ¬</a>
- </li>
-
- <li>
- <a href="/cn/references/migration/difference.html"
class="sidebar-link ">Weex å Vue 2.x çè¯æ³å·®å¼</a>
- </li>
-
- </ul>
-
- </li>
-
-
- </ul>
-</div>
-
- <a class="btn-close-sidebar iconfont icon-close"></a>
- </div>
-</div>
-
- <div class="article-wrapper page-layout">
- <div class="doc-nav">
-
-
-
-<div class="doc-nav-version">
- <select class="versionBtn" stype="/cn/references">
-
- <option value="2v" selected>v2.x</option>
- <option value="1v">v1.x</option>
-
- </select>
-</div>
-<div class="summary">
- <h2 class="part-title">
-
- æå
-
- </h2>
- <ul class="doc-summary">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/index.html"
class="sidebar-link ">éç¨ç¹æ§</a></h3>
-
- <ul class="chapter">
-
- <li>
- <a href="/cn/references/ios-apis.html" class="sidebar-link
">iOS APIs</a>
- </li>
-
- <li>
- <a href="/cn/references/android-apis.html" class="sidebar-link
">Android APIs</a>
- </li>
-
- <li>
- <a href="/cn/references/html5-apis.html" class="sidebar-link
">HTML5 APIs</a>
- </li>
-
- <li>
- <a href="/cn/references/jsfm-apis.html" class="sidebar-link
">JS Framework APIs</a>
- </li>
-
- <li>
- <a href="/cn/references/common-style.html" class="sidebar-link
">éç¨æ ·å¼</a>
- </li>
-
- <li>
- <a href="/cn/references/text-style.html" class="sidebar-link
">ææ¬æ ·å¼</a>
- </li>
-
- <li>
- <a href="/cn/references/color-names.html" class="sidebar-link
">é¢è²å称å表</a>
- </li>
-
- <li>
- <a href="/cn/references/gesture.html" class="sidebar-link
">æå¿</a>
- </li>
-
- <li>
- <a href="/cn/references/path.html" class="sidebar-link ">Path
(è±)</a>
- </li>
-
- </ul>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a
href="/cn/references/components/index.html" class="sidebar-link ">å
建ç»ä»¶</a></h3>
-
- <ul class="chapter">
-
- <li>
- <a href="/cn/references/components/a.html" class="sidebar-link
"><a></a>
- </li>
-
- <li>
- <a href="/cn/references/components/indicator.html"
class="sidebar-link "><indicator></a>
- </li>
-
- <li>
- <a href="/cn/references/components/slider.html"
class="sidebar-link "><slider></a>
- </li>
-
- <li>
- <a href="/cn/references/components/switch.html"
class="sidebar-link "><switch></a>
- </li>
-
- <li>
- <a href="/cn/references/components/text.html"
class="sidebar-link "><text></a>
- </li>
-
- <li>
- <a href="/cn/references/components/textarea.html"
class="sidebar-link "><textarea></a>
- </li>
-
- <li>
- <a href="/cn/references/components/video.html"
class="sidebar-link "><video></a>
- </li>
-
- <li>
- <a href="/cn/references/components/web.html"
class="sidebar-link "><web></a>
- </li>
-
- <li>
- <a href="/cn/references/components/div.html"
class="sidebar-link "><div></a>
- </li>
-
- <li>
- <a href="/cn/references/components/image.html"
class="sidebar-link "><image></a>
- </li>
-
- <li>
- <a href="/cn/references/components/list.html"
class="sidebar-link "><list></a>
- </li>
-
- <li>
- <a href="/cn/references/components/input.html"
class="sidebar-link "><input></a>
- </li>
-
- <li>
- <a href="/cn/references/components/waterfall.html"
class="sidebar-link "><waterfall></a>
- </li>
-
- <li>
- <a href="/cn/references/components/cell.html"
class="sidebar-link "><cell></a>
- </li>
-
- <li>
- <a href="/cn/references/components/loading.html"
class="sidebar-link "><loading></a>
- </li>
-
- <li>
- <a href="/cn/references/components/refresh.html"
class="sidebar-link "><refresh></a>
- </li>
-
- <li>
- <a href="/cn/references/components/scroller.html"
class="sidebar-link "><scroller></a>
- </li>
-
- </ul>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/modules/index.html"
class="sidebar-link ">å
建模å</a></h3>
-
- <ul class="chapter">
-
- <li>
- <a href="/cn/references/modules/animation.html"
class="sidebar-link ">animation</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/websocket.html"
class="sidebar-link ">WebSocket</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/picker.html"
class="sidebar-link ">picker</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/clipboard.html"
class="sidebar-link ">clipboard</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/dom.html" class="sidebar-link
">dom</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/modal.html"
class="sidebar-link ">modal</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/navigator.html"
class="sidebar-link ">navigator</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/storage.html"
class="sidebar-link ">storage</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/stream.html"
class="sidebar-link ">stream</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/webview.html"
class="sidebar-link ">webview</a>
- </li>
-
- <li>
- <a href="/cn/references/modules/globalevent.html"
class="sidebar-link ">globalEvent</a>
- </li>
-
- </ul>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/unit.html"
class="sidebar-link ">CSS åä½</a></h3>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/common-event.html"
class="sidebar-link ">éç¨äºä»¶</a></h3>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/native-dom-api.html"
class="sidebar-link ">Native DOM APIs</a></h3>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/weex-variable.html"
class="sidebar-link ">Weex å®ä¾åé</a></h3>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/web-standards.html"
class="sidebar-link ">Web æ å</a></h3>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a
href="/cn/references/js-service/index.html" class="sidebar-link ">JS
Service</a></h3>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/vue/index.html"
class="sidebar-link ">Vue</a></h3>
-
- <ul class="chapter">
-
- <li>
- <a href="/cn/references/vue/difference-with-web.html"
class="sidebar-link ">Vue 2.x å¨ Weex å Web ä¸çå·®å¼</a>
- </li>
-
- <li>
- <a href="/cn/references/vue/difference-of-vuex.html"
class="sidebar-link ">ä½¿ç¨ Vuex å vue-router</a>
- </li>
-
- </ul>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a href="/cn/references/advanced/index.html"
class="sidebar-link ">é«é¶ç¥è¯</a></h3>
-
- <ul class="chapter">
-
- <li>
- <a href="/cn/references/advanced/extend-to-ios.html"
class="sidebar-link current ">iOS æ©å±</a>
- </li>
-
- <li>
- <a href="/cn/references/advanced/extend-to-android.html"
class="sidebar-link ">Android æ©å±</a>
- </li>
-
- <li>
- <a href="/cn/references/advanced/extend-to-html5.html"
class="sidebar-link ">HTML5 æ©å±</a>
- </li>
-
- <li>
- <a href="/cn/references/advanced/extend-jsfm.html"
class="sidebar-link ">æå± JS framework</a>
- </li>
-
- <li>
- <a
href="/cn/references/advanced/integrate-devtool-to-android.html"
class="sidebar-link ">éæ Devtools å° Android</a>
- </li>
-
- <li>
- <a
href="/cn/references/advanced/integrate-devtool-to-ios.html"
class="sidebar-link ">éæ Devtools å° iOS</a>
- </li>
-
- </ul>
-
- </li>
-
- <li>
- <h3 class="chapter-title"><a
href="/cn/references/platform-difference.html" class="sidebar-link ">Weex å
Web å¹³å°çå·®å¼</a></h3>
-
- <ul class="chapter">
-
- <li>
- <a href="/cn/references/migration/index.html"
class="sidebar-link ">è¿ç§»</a>
- </li>
-
- <li>
- <a href="/cn/references/migration/migration-from-weex.html"
class="sidebar-link ">å¦ä½å°åæ Weex 项ç®æ¹é æ Vue çæ¬</a>
- </li>
-
- <li>
- <a href="/cn/references/migration/difference.html"
class="sidebar-link ">Weex å Vue 2.x çè¯æ³å·®å¼</a>
- </li>
-
- </ul>
-
- </li>
-
-
- </ul>
-</div>
- </div>
-
-
-<article class="article article-type-references">
- <div class="article-entry" itemprop="articleBody">
- <header class="article-header">
-
-
- <h1 class="article-title" itemprop="name">
- iOS æ©å±
- </h1>
-
-
- <time class="article-date" datetime="2017-05-17T07:17:21.000Z">Updated time:
17/05/2017</time>
-</header>
- <h2 id="注æ"><a href="#注æ" class="headerlink"
title="注æ"></a>注æ</h2><p><strong>Weex æææ´é²ç» JS çå
ç½®
module æ component API é½æ¯å®å
¨åå¯æ§çï¼
å®ä»¬ä¸ä¼å»è®¿é®ç³»ç»çç§æ API ï¼ä¹ä¸ä¼å»åä»»ä½ runtime
ä¸ç hack æ´ä¸ä¼å»æ¹ååºç¨åæçåè½å®ä½ã</strong></p>
-<p><strong>å¦æéè¦æ©å±èªå®ä¹ç module æè
component
ï¼ä¸å®æ³¨æä¸è¦å° OC ç runtime æ´é²ç» JS ï¼ ä¸è¦å°ä¸äºè¯¸å¦
<code>dlopen()</code>ï¼ <code>dlsym()</code>ï¼
<code>respondsToSelector:</code>ï¼<code>performSelector:</code>ï¼<code>method_exchangeImplementations()</code>
çå¨æåä¸å¯æ§çæ¹æ³æ´é²ç»JSï¼
ä¹ä¸è¦å°ç³»ç»çç§æAPIæ´é²ç»JS</strong></p>
-<h2 id="Module-æ©å±"><a href="#Module-æ©å±" class="headerlink"
title="Module æ©å±"></a>Module æ©å±</h2><p><a
href="https://github.com/weexteam/article/issues/55" target="_blank"
rel="external">swift</a> æ©å± module </p>
-<p>Weex SDK åªæä¾æ¸²æï¼èä¸æ¯å
¶ä»çè½åï¼å¦æä½ éè¦
åç½ç»ï¼å¾çï¼URL跳转è¿äºç¹æ§ï¼éè¦èªå·±å¨æå®ç°ä»ä»¬<br>ä¾å¦ï¼å¦æä½
æ³å®ç°ä¸ä¸ªurlå°å跳转å½æ°ï¼ä½ å¯ä»¥æç
§å¦ä¸æ¥éª¤å®ç°ä¸ä¸ª
Module</p>
-<h3 id="èªå®ä¹moduleçæ¥éª¤"><a href="#èªå®ä¹moduleçæ¥éª¤"
class="headerlink"
title="èªå®ä¹moduleçæ¥éª¤"></a><strong>èªå®ä¹moduleçæ¥éª¤</strong></h3><ol>
-<li>èªå®ä¹çmoduleç±» å¿
é¡»å®ç° <code>WXModuleProtocol</code></li>
-<li>å¿
须添å å®<code>WX_EXPORT_METHOD</code>,
å®å¯ä»¥è¢«weexè¯å«ï¼å®çåæ°æ¯ JavaScriptè°ç¨
moduleæå®æ¹æ³çåæ°</li>
-<li>æ·»å <code>@synthesized
weexInstance</code>ï¼æ¯ä¸ªmoudle对象被ç»å®å°ä¸ä¸ªæå®çå®ä¾ä¸</li>
-<li>Module
æ¹æ³ä¼å¨UI线ç¨ä¸è¢«è°ç¨ï¼æ以ä¸è¦å太å¤èæ¶çä»»å¡å¨è¿éï¼å¦æè¦å¨å
¶ä»çº¿ç¨æ§è¡æ´ä¸ªmodule
æ¹æ³ï¼éè¦å®ç°<code>WXModuleProtocol</code>ä¸<code>- (NSThread
*)targetExecuteThread</code>çæ¹æ³ï¼è¿æ
·ï¼ååå°è¿ä¸ªmoduleçä»»å¡ä¼å¨æå®ç线ç¨ä¸è¿è¡</li>
-<li>Weex çåæ°å¯ä»¥æ¯ String æè
Map</li>
-<li><p>Module æ¯æè¿åå¼ç»
JavaScriptä¸çåè°ï¼åè°çç±»åæ¯<code>WXModuleCallback</code>,åè°çåæ°å¯ä»¥æ¯Stringæè
Map</p>
- <figure class="highlight plain"><table><tr><td class="code"><pre><div
class="line">@implementation WXEventModule</div><div class="line">@synthesize
weexInstance;</div><div class="line">
WX_EXPORT_METHOD(@selector(openURL:callback))</div><div class="line">-
(void)openURL:(NSString *)url callback:(WXModuleCallback)callback</div><div
class="line">{</div><div class="line"> NSString *newURL =
url;</div><div class="line"> if ([url hasPrefix:@"//"])
{</div><div class="line"> newURL = [NSString
stringWithFormat:@"http:%@", url];</div><div class="line"> }
else if (![url hasPrefix:@"http"]) {</div><div class="line">
newURL = [NSURL URLWithString:url
relativeToURL:weexInstance.scriptURL].absoluteString;</div><div class="line">
}</div><div class="line"></div><div class="line"> UIViewController
*controller = [[WXDemoViewController alloc] init];</div><div class="line">
((WXDemoViewController *)controller).u
rl = [NSURL URLWithString:newURL];</div><div class="line"></div><div
class="line"> [[weexInstance.viewController navigationController]
pushViewController:controller animated:YES];</div><div class="line">
callback(@{@"result":@"success"});</div><div
class="line">}</div><div class="line"></div><div
class="line">@end</div></pre></td></tr></table></figure>
-</li>
-</ol>
-<h4 id="æ´é²åæ¥æ¹æ³v0-10"><a href="#æ´é²åæ¥æ¹æ³v0-10"
class="headerlink" title="æ´é²åæ¥æ¹æ³v0.10+"></a>æ´é²åæ¥æ¹æ³<span
class="api-version">v0.10+</span></h4><p>å¦æä½
æ³è¦æ´é²åæ¥çnativeæ¹æ³ç»JSï¼
å³JSå¯ä»¥ç´æ¥æ¿å°Nativeçè¿åå¼ã ä½
å¯ä»¥ä½¿ç¨<code>WX_EXPORT_METHOD_SYNC</code> å®ã</p>
-<p>native 代ç :</p>
-<figure class="highlight plain"><table><tr><td class="code"><pre><div
class="line">@implementation WXEventModule</div><div class="line"></div><div
class="line">WX_EXPORT_METHOD_SYNC(@selector(getString))</div><div
class="line"> </div><div class="line">- (NSString *)getString</div><div
class="line">{</div><div class="line"> return
@"testString";</div><div class="line">}</div><div
class="line"></div><div class="line">@end</div></pre></td></tr></table></figure>
-<p>js 代ç :</p>
-<figure class="highlight javascript"><table><tr><td class="code"><pre><div
class="line"><span class="keyword">const</span> eventModule =
weex.requireModule(<span class="string">'event'</span>)</div><div
class="line"><span class="keyword">const</span> returnString =
syncTest.getString() <span class="comment">// return
"testString"</span></div></pre></td></tr></table></figure>
-<p>é¤äºstring, ä½ ä¹å¯ä»¥è¿å <code>number/array/dictionary</code>
ç±»å.</p>
-<p><code>注æ:</code> æ´é²çåæ¥æ¹æ³åªè½å¨ JS
线ç¨æ§è¡ï¼è¯·ä¸è¦å太å¤åæ¥çå·¥ä½å¯¼è´JSæ§è¡é»å¡ã</p>
-<p><code>注æ:</code> Vue 2.0 è¿æªæ¯æè¿ä¸ªç¹æ§ï¼ææ©ä¼å¨ 0.12
çæ¬æ¯æ</p>
-<h3 id="注å-module"><a href="#注å-module" class="headerlink"
title="注å module"></a>注å module</h3><p>éè¿è°ç¨ WXSDKEngine ä¸ç
<code>registerModule:withClass</code>æ¹æ³æ¥æ³¨åèªå·±çmodule</p>
-<figure class="highlight plain"><table><tr><td class="code"><pre><div
class="line">WXSDKEngine.h</div><div class="line">/**</div><div class="line">*
@abstract Registers a module for a given name</div><div class="line">* @param
name The module name to register</div><div class="line">* @param clazz The
module class to register</div><div class="line">**/</div><div class="line">+
(void)registerModule:(NSString *)name withClass:(Class)clazz;</div><div
class="line">[WXSDKEngine registerModule:@"event"
withClass:[WXEventModule class]];</div></pre></td></tr></table></figure>
-<h3 id="使ç¨èªå·±ç-module"><a href="#使ç¨èªå·±ç-module"
class="headerlink" title="使ç¨èªå·±ç module"></a>使ç¨èªå·±ç
module</h3><p>è¿éç require éé¢ç event å°±æ¯å¨ ä¸ä¸æ¥è°ç¨
<code>registerModule:</code> 注å module æ¶åç name</p>
-<figure class="highlight javascript"><table><tr><td class="code"><pre><div
class="line"><span class="keyword">var</span> eventModule =
weex.requireModule(<span class="string">'event'</span>); </div><div
class="line">eventModule.openURL(<span class="string">'url'</span>,<span
class="function"><span class="keyword">function</span>(<span
class="params">ret</span>) </span>{ </div><div class="line">
nativeLog(ret);</div><div
class="line">});</div></pre></td></tr></table></figure>
-<p>Weex SDK 没æ å¾çä¸è½½ï¼navigation
æä½çè½åï¼è¯·å¤§å®¶èªå·±å®ç°è¿äº protocol</p>
-<h2 id="WXImgLoaderProtocol"><a href="#WXImgLoaderProtocol" class="headerlink"
title="WXImgLoaderProtocol"></a>WXImgLoaderProtocol</h2><p>weexSDK
没æå¾çä¸è½½çè½åï¼éè¦å®ç° WXImgLoaderProtocol,
åèä¸é¢çä¾å</p>
-<figure class="highlight plain"><table><tr><td class="code"><pre><div
class="line">WXImageLoaderProtocol.h</div><div class="line">@protocol
WXImgLoaderProtocol <WXModuleProtocol></div><div
class="line">/**</div><div class="line">* @abstract Creates a image download
handler with a given URL</div><div class="line">* @param imageUrl The URL of
the image to download</div><div class="line">* @param imageFrame The frame of
the image you want to set</div><div class="line">* @param options : The options
to be used for this download</div><div class="line">* @param completedBlock : A
block called once the download is completed.</div><div class="line"> image :
the image which has been download to local.</div><div class="line"> error :
the error which has happened in download.</div><div class="line"> finished :
a Boolean value indicating whether download action has finished.</div><div
class="line">*/</div><div
class="line">-(id<WXImageOperationProtocol>)downloadImageWithUR
L:(NSString *)url imageFrame:(CGRect)imageFrame userInfo:(NSDictionary
*)options completed:(void(^)(UIImage *image, NSError *error, BOOL
finished))completedBlock;</div><div
class="line">@end</div></pre></td></tr></table></figure>
-<p>å®ç°ä¸è¿°åè®® </p>
-<figure class="highlight plain"><table><tr><td class="code"><pre><div
class="line">@implementation WXImgLoaderDefaultImpl</div><div
class="line">#pragma mark -</div><div class="line">#pragma mark
WXImgLoaderProtocol</div><div class="line"></div><div class="line">-
(id<WXImageOperationProtocol>)downloadImageWithURL:(NSString *)url
imageFrame:(CGRect)imageFrame userInfo:(NSDictionary *)userInfo
completed:(void(^)(UIImage *image, NSError *error, BOOL
finished))completedBlock</div><div class="line">{</div><div class="line">
if ([url hasPrefix:@"//"]) {</div><div class="line">
url = [@"http:" stringByAppendingString:url];</div><div class="line">
}</div><div class="line"> return
(id<WXImageOperationProtocol>)[[SDWebImageManager sharedManager]
downloadImageWithURL:[NSURL URLWithString:url] options:0 progress:^(NSInteger
receivedSize, NSInteger expectedSize) { </div><div class="line">
} completed:^(UIImage *ima
ge, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL
*imageURL) {</div><div class="line"> if (completedBlock)
{</div><div class="line"> completedBlock(image, error,
finished);</div><div class="line"> }</div><div class="line">
}];</div><div class="line">}</div><div
class="line">@end</div></pre></td></tr></table></figure>
-<h3 id="handler注å"><a href="#handler注å" class="headerlink"
title="handler注å"></a>handler注å</h3><p>ä½ å¯ä»¥éè¿WXSDKEngine
ä¸ç <code>registerHandler:withProtocol</code>注åhandler</p>
-<figure class="highlight plain"><table><tr><td class="code"><pre><div
class="line">WXSDKEngine.h</div><div class="line">/**</div><div class="line">*
@abstract Registers a handler for a given handler instance and specific
protocol</div><div class="line">* @param handler The handler instance to
register</div><div class="line">* @param protocol The protocol to
confirm</div><div class="line">*/</div><div class="line">+
(void)registerHandler:(id)handler withProtocol:(Protocol *)protocol;</div><div
class="line"></div><div class="line">[WXSDKEngine
registerHandler:[WXImgLoaderDefaultImpl new]
withProtocol:@protocol(WXImgLoaderProtocol)]</div></pre></td></tr></table></figure>
-<h2 id="Components-æ©å±"><a href="#Components-æ©å±" class="headerlink"
title="Components æ©å±"></a>Components æ©å±</h2><p>è½ç¶ WeexSDK
ä¸æå¾å¤ç native ç Componentï¼ä½è¿æå¯è½å¹¶ä¸è½æ»¡è¶³ä½
çéæ±ãå¨ä¹åä½ å¯è½å·²ç»åäºä¸äºå¾é
·ç« native
çç»ä»¶ï¼æ³å
è£
ä¸ä¸ï¼å¯¼å
¥å° Weex ä¸ï¼å
æ¤æ们æä¾äºè®©å¼åè
å®ç°èªå·±ç native Componentãä¸é¢å°ä»¥
WeexSDK ä¸å·²ç»åå¨ç Componentï¼<code>image</code>
为ä¾åï¼ä»ç»ä¸ä¸å¦ä½æ建ä¸ä¸ª native Componentãå设ä½
å·²ç»äºè§£ iOS å¼å</p>
-<h3 id="注å-Component"><a href="#注å-Component" class="headerlink"
title="注å Component"></a>注å Component</h3><p>注åä¸ä¸ª component
æ¯è¾ç®åï¼è°ç¨ <code>WXSDKEngine</code> ä¸ç
<code>registerComponent:withClass:</code> æ¹æ³ï¼ä¼ å
¥ç»ä»¶çæ
ç¾å称ï¼è¿æ对åºç class ç¶åä½ å¯ä»¥å建ä¸ä¸ª
<code>WXImageComponent</code> 表示 <code>image</code> ç»ä»¶çå®ç°ãå¨
<code>.we</code> æ件ä¸ï¼åªéè¦å
<code><image></image></code></p>
-<h3 id="æ·»å å±æ§"><a href="#æ·»å å±æ§" class="headerlink" title="æ·»å
å±æ§"></a>æ·»å å±æ§</h3><p>ç°å¨æ们è¦åä¸äºè®© image component
æ´å 强大çäºæ
ãæ¢ç¶ä½ä¸ºä¸ä¸ªå¾çç
componentï¼é£å®åºè¯¥è¦ææºï¼ç»ä»å ä¸ä¸ä¸ª <code>src</code>
çå±æ§ï¼åæ¶ç»å®å ä¸ä¸ä¸ª <code>resize</code> çå±æ§ï¼å¯ä»¥é
ç½®çæ <code>contain/cover/stretch</code>ï¼</p>
-<figure class="highlight plain"><table><tr><td class="code"><pre><div
class="line">@interface WXImageComponent ()</div><div class="line"></div><div
class="line">@property (nonatomic, strong) NSString *imageSrc;</div><div
class="line">@property (nonatomic, assign) UIViewContentMode
resizeMode;</div><div class="line"></div><div
class="line">@end</div></pre></td></tr></table></figure>
-<p>component ä¸ææç styleï¼attributeï¼events é½ä¼è¢«ä¼ éå°
Component çåå§åæ¹æ³ä¸ï¼æ以ï¼ä½
å¯ä»¥å¨åå§åæ¹æ³ä¸åå¨ä½ æå
´è¶£çä¸äºå±æ§å¼</p>
-<figure class="highlight plain"><table><tr><td class="code"><pre><div
class="line">@implementation WXImageComponent</div><div class="line"></div><div
class="line">- (instancetype)initWithRef:(NSString *)ref type:(NSString *)type
styles:(NSDictionary *)styles attributes:(NSDictionary *)attributes
events:(NSArray *)events weexInstance:(WXSDKInstance *)weexInstance</div><div
class="line">{</div><div class="line"> if (self = [super
initWithRef:ref type:type styles:styles attributes:attributes events:events
weexInstance:weexInstance]) {</div><div class="line"> _imageSrc =
[WXConvert NSString:attributes[@"src"]];</div><div class="line">
_resizeMode = [WXConvert
UIViewContentMode:attributes[@"resize"]];</div><div
class="line">}</div><div class="line"></div><div class="line"> return
self;</div><div class="line">}</div><div class="line"></div><div
class="line">@end</div></pre></td></tr></table></figure>
-<p>attribute ä¸æ¿å°çå¼çç±»åé½æ¯
<code>id</code>ï¼æ们å¯ä»¥ç¨è½¬æ¢æ¹æ³æå®è½¬æ¢å°ä»»ä½å¼ãWeex
SDK æä¾äºä¸äºåºç¡ç转æ¢æ¹æ³ï¼å¯ä»¥åè <code>WXConvert</code>
ç±»ï¼æè
ä½ å¯ä»¥æ·»å èªå·±ç转æ¢å½æ°ã</p>
-<h3 id="Hooking-渲æçå½å¨æ"><a href="#Hooking-渲æçå½å¨æ"
class="headerlink" title="Hooking 渲æçå½å¨æ"></a>Hooking
渲æçå½å¨æ</h3><p>native ç component æ¯ç± Weex 管ççï¼Weex
å建ï¼å¸å±ï¼æ¸²æï¼éæ¯ãWeex ç component çå½å¨æé½æ¯å¯ä»¥
hook çï¼ä½ å¯ä»¥å¨è¿äºçå½å¨æä¸å»åèªå·±çäºæ
ã</p>
-<table>
-<thead>
-<tr>
-<th style="text-align:center">æ¹æ³</th>
-<th>æè¿°</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:center">initWithRef:type:â¦</td>
-<td>ç¨ç»å®çå±æ§åå§åä¸ä¸ªcomponent.</td>
-</tr>
-<tr>
-<td style="text-align:center">layoutDidFinish</td>
-<td>å¨componentå®æå¸å±æ¶åä¼è°ç¨.</td>
-</tr>
-<tr>
-<td style="text-align:center">loadView</td>
-<td>å建component管ççview.</td>
-</tr>
-<tr>
-<td style="text-align:center">viewWillLoad</td>
-<td>å¨componentçviewå è½½ä¹åä¼è°ç¨.</td>
-</tr>
-<tr>
-<td style="text-align:center">viewDidLoad</td>
-<td>å¨componentçviewå è½½å®ä¹åè°ç¨.</td>
-</tr>
-<tr>
-<td style="text-align:center">viewWillUnload</td>
-<td>å¨componentçview被éæ¾ä¹åè°ç¨.</td>
-</tr>
-<tr>
-<td style="text-align:center">viewDidUnload</td>
-<td>å¨componentçview被éæ¾ä¹åè°ç¨.</td>
-</tr>
-<tr>
-<td style="text-align:center">updateStyles:</td>
-<td>å¨componentçstyleæ´æ°æ¶åè°ç¨.</td>
-</tr>
-<tr>
-<td style="text-align:center">updateAttributes:</td>
-<td>å¨componentçattributeæ´æ°æ¶åè°ç¨.</td>
-</tr>
-<tr>
-<td style="text-align:center">addEvent:</td>
-<td>ç»componentæ·»å eventçæ¶åè°ç¨.</td>
-</tr>
-<tr>
-<td style="text-align:center">removeEvent:</td>
-<td>å¨event移é¤çæ¶åè°ç¨.</td>
-</tr>
-</tbody>
-</table>
-<p>å¨ image component çä¾åéé¢ï¼å¦ææ们éè¦æ们èªå·±ç
image view çè¯ï¼å¯ä»¥å¤å <code>loadView</code>è¿ä¸ªæ¹æ³.</p>
-<figure class="highlight plain"><table><tr><td class="code"><pre><div
class="line">- (UIView *)loadView</div><div class="line">{</div><div
class="line">return [[WXImageView alloc] init];</div><div
class="line">}</div></pre></td></tr></table></figure>
-<p>ç°å¨æä»¬ä½¿ç¨ <code>WXImageView</code> 渲æ <code>image</code>
componentã<br>ä½ä¸ºä¸ä¸ª image
componentï¼æ们éè¦æ¿å°æå¡å¨å¾çï¼èä¸æå®è®¾ç½®è¿ image
view é. è¿ä¸ªæä½å¯ä»¥å¨ <code>viewDidLoad</code>
æ¹æ³ä¸åï¼è¿ä¸ªæ¹æ³æ¯å¨ view å·²ç»è¢«å建èä¸å è½½äºæ¶å
Weex SDK ä¼è°ç¨å°ï¼èä¸ <code>viewDidLoad</code> è¿ä¸ªæ¹æ³æ¯ä½
åé¢å¤åå§åå·¥ä½æ¯å¦æ¹å content mode(ä¹å°±æ¯è®¾ç½®resize)
çæ好æ¶é´.</p>
-<figure class="highlight plain"><table><tr><td class="code"><pre><div
class="line">- (void)viewDidLoad</div><div class="line">{</div><div
class="line"> UIImageView *imageView = (UIImageView *)self.view;</div><div
class="line"> imageView.contentMode = _resizeMode;</div><div class="line">
imageView.userInteractionEnabled = YES;</div><div class="line">
imageView.clipsToBounds = YES;</div><div class="line">
imageView.exclusiveTouch = YES;</div><div class="line"></div><div class="line">
// Do your image fetching and updating logic</div><div
class="line">}</div></pre></td></tr></table></figure>
-<p>å¦æå¯ä»¥æ¹å image ç srcï¼ä¹å¯ä»¥ hook
<code>updateAttributes:</code> æ¹æ³æ¥åå±æ§æ´æ°æä½ï¼å½
<code>updateAttributes:</code> æè
<code>updateStyles:</code>
被è°ç¨çæ¶åï¼ component ç view å·²ç»å è½½å®æ</p>
-<figure class="highlight plain"><table><tr><td class="code"><pre><div
class="line">- (void)updateAttributes:(NSDictionary *)attributes</div><div
class="line">{</div><div class="line"> if
(attributes[@"src"]) {</div><div class="line"> _imageSrc
= [WXConvert NSString:attributes[@"src"]];</div><div class="line">
// Do your image updating logic</div><div class="line"> }</div><div
class="line"></div><div class="line"> if (attributes[@"resize"])
{</div><div class="line"> _resizeMode = [WXConvert
UIViewContentMode:attributes[@"resize"]];</div><div class="line">
self.view.contentMode = _resizeMode;</div><div class="line">
}</div><div class="line">}</div></pre></td></tr></table></figure>
-<p>æè®¸ä½ éè¦èèæ´å¤ççå½å¨ææ¹æ³å»
Hookï¼å½å¸å±å®ææ¶åï¼å <code>layoutDidFinish</code>ï¼å¦æä½
æ³äºè§£æ´å¤ï¼å¯ä»¥åèä¸ä¸<code>WXComponent.h</code>
声æçæ¹æ³ã</p>
-<p>ç°å¨ä½ å¯ä»¥ç¨å¨ä»»ä½ <code>.we</code> æ件éé¢ä½¿ç¨
<code><image></code>ï¼èä¸å¯ä»¥å ä¸ image çå±æ§ã</p>
-<figure class="highlight html"><table><tr><td class="code"><pre><div
class="line"><span class="tag"><<span class="name">image</span> <span
class="attr">style</span>=<span class="string">"your-custom-style"</span> <span
class="attr">src</span>=<span class="string">"image-remote-source"</span> <span
class="attr">resize</span>=<span
class="string">"contain/cover/stretch"</span>></span><span
class="tag"></<span
class="name">image</span>></span></div></pre></td></tr></table></figure>
-<h5 id="component-æ¹æ³"><a href="#component-æ¹æ³" class="headerlink"
title="component æ¹æ³"></a>component æ¹æ³</h5><p>WeexSDK 0.9.5
ä¹åæ¯æäºå¨ js ä¸ç´æ¥è°ç¨ component
çæ¹æ³ï¼è¿éæä¾ä¸ä¸ªä¾å</p>
-<ul>
-<li><p>èªå®ä¹ä¸ä¸ª WXMyCompoenent çç»ä»¶</p>
-<figure class="highlight plain"><table><tr><td class="code"><pre><div
class="line">@implementation WXMyComponent</div><div
class="line">WX_EXPORT_METHOD(@selector(focus)) //
æ´é²è¯¥æ¹æ³ç»js</div><div class="line">-
(instancetype)initWithRef:(NSString *)ref type:(NSString *)type
styles:(NSDictionary *)styles attributes:(NSDictionary *)attributes
events:(NSArray *)events weexInstance:(WXSDKInstance *)weexInstance</div><div
class="line">{</div><div class="line"> if (self = [super
initWithRef:ref type:type styles:styles attributes:attributes events:events
weexInstance:weexInstance]) {</div><div class="line"> // handle
your attributes</div><div class="line"> // handle your styles</div><div
class="line"> }</div><div class="line"> </div><div class="line">
return self;</div><div class="line">}</div><div class="line"></div><div
class="line">- (void)focus</div><div class="line">{</div><div
class="line"> NSLog(@"you got it");
</div><div class="line">}</div><div
class="line">@end</div></pre></td></tr></table></figure>
-</li>
-<li><p>注åç»ä»¶ <code>[WXSDKEngine
registerComponent:@"mycomponent" withClass:[WXMyComponent
class]]</code></p>
-</li>
-<li><p>å¨ weex æ件ä¸è°ç¨</p>
-<figure class="highlight html"><table><tr><td class="code"><pre><div
class="line"><span class="tag"><<span
class="name">template</span>></span></div><div class="line"> <span
class="tag"><<span class="name">mycomponent</span> <span
class="attr">id</span>=<span
class="string">'mycomponent'</span>></span><span class="tag"></<span
class="name">mycomponent</span>></span></div><div class="line"><span
class="tag"></<span class="name">template</span>></span></div><div
class="line"><span class="tag"><<span
class="name">script</span>></span><span class="javascript"></span></div><div
class="line"> <span class="built_in">module</span>.exports = {</div><div
class="line"> <span class="attr">created</span>:<span class="function"><span
class="keyword">function</span>(<span class="params"></span>)
</span>{</div><div class="line"> <span
class="keyword">this</span>.$el(<span
class="string">'mycomponent'</span>).focus();</div><div class="line"> }
;</div><div class="line"> }</div><div class="line"><span
class="tag"></<span
class="name">script</span>></span></div></pre></td></tr></table></figure>
-</li>
-</ul>
-
- </div>
-
-</article>
-</div>
-
- <footer id="footer">
- <div class="row clearfix">
- <div class="dropdown select-lang">
- <a href="javascript:;" class="dropdown-toggle">
- Language
- <span class="caret"></span>
- </a>
- <ul class="dropdown-menu pick-lang">
- <li>
- <a href="/references/advanced/extend-to-ios.html"
data-lang="en">English</a>
- </li>
- <li>
- <a href="/cn/references/advanced/extend-to-ios.html"
data-lang="zh-cn">ä¸æ</a>
- </li>
- </ul>
- </div>
- </div>
- <div class="disclaimer">
- <div><img
src="//gw.alicdn.com/tfs/TB1pTBZQFXXXXX9XXXXXXXXXXXX-794-280.png" width="200px"
alt="Apache Incubator"></div>
- <div><span class="title">Disclaimer:</span> Apache Weex is an effort
undergoing incubation at The Apache Software Foundation (ASF), sponsored by the
Apache Incubator. Incubation is required of all newly accepted projects until a
further review indicates that the infrastructure, communications, and decision
making process have stabilized in a manner consistent with other successful ASF
projects. While incubation status is not necessarily a reflection of the
completeness or stability of the code, it does indicate that the project has
yet to be fully endorsed by the ASF.</div>
- <br/>
- </div>
- <hr>
- <div class="row">
- <p> <img src="//gw.alicdn.com/tfs/TB1bg8SQFXXXXcHXXXXXXXXXXXX-85-170.png"
height="50px" alt="Apache"><span>Copyright(c) 2017 The Apache Software
Foundation. Licensed under the </span> <a
href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version
2.0</a></p>
- </div>
- <div class="row clearfix">
- <div></div>
- </div>
-</footer>
- <div style="display: none;">
- <script src="//s95.cnzz.com/z_stat.php?id=1261496509&web_id=1261496509"
language="JavaScript"></script>
-</div>
-
- <script src="/js/reqwest.js"></script>
- <script src="/js/common.js"></script>
-</body>
-</html>