資料介紹
軟件簡(jiǎn)介
FFRouter 是 iOS 中一個(gè)強(qiáng)大且易用的 URL 路由庫(kù),支持 URL Rewrite,使 APP 在發(fā)布之后也可以動(dòng)態(tài)修改相關(guān)路由邏輯?;谄ヅ洳檎?URL,效率高。集成和使用都非常簡(jiǎn)單!
功能
-
具備基本的 URL 注冊(cè)、Route、取消注冊(cè)、打印 Log 等
-
支持使用通配符(*)注冊(cè) URL
-
支持 URL Rewrite
-
支持 Rewrite 時(shí)獲取原 URL 參數(shù)或 URLComponents,并可對(duì)其進(jìn)行URL Encode或 Decode
-
支持通過 URL 獲取 Object
-
支持 Route URL 時(shí)傳遞非常規(guī)對(duì)象
-
支持 Route 一個(gè)未注冊(cè)的 URL 時(shí)統(tǒng)一回調(diào)
安裝
CocoaPods
target?'MyApp'?do ??pod?'FFRouter' end
運(yùn)行?pod install
手動(dòng)安裝
添加其中的?FFRouter?文件夾到自己項(xiàng)目
使用方法
首先
#import?"FFRouter.h"
1、基本使用
/** ?注冊(cè)?url ?@param?routeURL?要注冊(cè)的?URL ?@param?handlerBlock?URL?被?Route?后的回調(diào) ?*/ +?(void)registerRouteURL:(NSString?*)routeURL?handler:(FFRouterHandler)handlerBlock; /** ?注冊(cè)?URL,通過該方式注冊(cè)的?URL?被?Route?后可返回一個(gè)?Object ?@param?routeURL?要注冊(cè)的?URL ?@param?handlerBlock?URL?被?Route?后的回調(diào),可在回調(diào)中返回一個(gè)?Object ?*/ +?(void)registerObjectRouteURL:(NSString?*)routeURL?handler:(FFObjectRouterHandler)handlerBlock; /** ?判斷?URL?是否可被?Route(是否已經(jīng)注冊(cè)) ?@param?URL?要判斷的?URL ?@return?是否可被?Route ?*/ +?(BOOL)canRouteURL:(NSString?*)URL; /** ?Route?一個(gè)?URL ?@param?URL?要?Router?的?URL ?*/ +?(void)routeURL:(NSString?*)URL; /** ?Route?一個(gè)?URL,并帶上額外參數(shù) ?@param?URL?要?Router?的?URL ?@param?parameters?額外參數(shù) ?*/ +?(void)routeURL:(NSString?*)URL?withParameters:(NSDictionary?*)parameters; /** ?Route?一個(gè)?URL,可獲得返回的?Object ?@param?URL?要?Router?的?URL ?@return?返回的?Object ?*/ +?(id)routeObjectURL:(NSString?*)URL; /** ?Route?一個(gè)?URL,并帶上額外參數(shù),可獲得返回的?Object ?@param?URL?要?Router?的?URL ?@param?parameters?額外參數(shù) ?@return?返回的?Object ?*/ +?(id)routeObjectURL:(NSString?*)URL?withParameters:(NSDictionary ?*)parameters; /** ?Route?一個(gè)未注冊(cè)?URL?時(shí)回調(diào) ?@param?handler?回調(diào) ?*/ +?(void)routeUnregisterURLHandler:(FFRouterUnregisterURLHandler)handler; /** ?取消注冊(cè)某個(gè)?URL ?@param?URL?要被取消注冊(cè)的?URL ?*/ +?(void)unregisterRouteURL:(NSString?*)URL; /** ?取消注冊(cè)所有?URL ?*/ +?(void)unregisterAllRoutes; /** ?是否顯示?Log,用于調(diào)試 ?@param?enable?YES?or?NO,默認(rèn)為?NO ?*/ +?(void)setLogEnabled:(BOOL)enable;
【備注】
(1)注冊(cè) URL:
[FFRouter?registerRouteURL:@"protocol://page/routerDetails/:id"?handler:^(NSDictionary?*routerParameters)?{ ???//Route的URL與本次注冊(cè)URL匹配時(shí)的回調(diào)?? }]; [FFRouter?registerRouteURL:@"wildcard://*"?handler:^(NSDictionary?*routerParameters)?{ ???//Route的URL與本次注冊(cè)URL匹配時(shí)的回調(diào)?? }]; [FFRouter?registerRouteURL:@"protocol://page/routerObjectDetails"?handler:^(NSDictionary?*routerParameters)?{ ???//Route的URL與本次注冊(cè)URL匹配時(shí)的回調(diào)?? }];
可通過routerParameters獲取 URL 中的參數(shù),routerParameters[FFRouterParameterURLKey]為完整的URL. (2)當(dāng)需要通過以下方法:
+?(id)routeObjectURL:(NSString?*)URL;
Route 一個(gè) URL 并獲取返回值時(shí),需要使用如下方法注冊(cè) URL:
+?(void)registerObjectRouteURL:(NSString?*)routeURL?handler:(FFObjectRouterHandler)handlerBlock;
并在 handlerBlock 中返回需要返回的 Object,例如:
//注冊(cè)并返回必要的值
[FFRouter?registerObjectRouteURL:@"protocol://page/routerObjectDetails"?handler:^id(NSDictionary?*routerParameters)?{
????????NSString?*str?=?@“根據(jù)需要返回必要的Object”;
????????return?str;
????}];
????
//獲取返回的值
NSString?*ret?=?[FFRouter?routeObjectURL:@"protocol://page/routerObjectDetails"];
(3)如果需要傳遞非常規(guī)對(duì)象作為參數(shù),如UIImage等,可使用如下方式:
[FFRouter?routeURL:@"protocol://page/routerDetails?nickname=imlifengfeng"?withParameters:@{@"img":[UIImage?imageNamed:@"router_test_img"]}];
2、URL Rewrite
/** ?根據(jù)設(shè)置的?Rules?去?rewrite?一個(gè)?URL ?@param?url?將被?rewrite?的?URL ?@return?rewrite?后的?URL ?*/ +?(NSString?*)rewriteURL:(NSString?*)url; /** ?添加一個(gè)?RewriteRule ?@param?matchRule?正則匹配規(guī)則 ?@param?targetRule?轉(zhuǎn)換規(guī)則 ?*/ +?(void)addRewriteMatchRule:(NSString?*)matchRule?targetRule:(NSString?*)targetRule; /** ?同時(shí)添加多個(gè)?RewriteRule,格式必須為:@[@{@"matchRule":@"YourMatchRule",@"targetRule":@"YourTargetRule"},...] ?@param?rules?RewriteRules ?*/ +?(void)addRewriteRules:(NSArray?*)rules; /** ?移除一個(gè)?RewriteRule ?@param?matchRule?將被移除的?matchRule ?*/ +?(void)removeRewriteMatchRule:(NSString?*)matchRule; /** ?移除所有?RewriteRule ?*/ +?(void)removeAllRewriteRules;
【備注】
(1)可以使用正則添加一條 Rewrite 規(guī)則,例如: 要實(shí)現(xiàn)打開 URL:https://www.taobao.com/search/原子彈時(shí),將其攔截,改用本地已注冊(cè)的 URL:protocol://page/routerDetails?product=原子彈打開。 首先添加一條 Rewrite 規(guī)則:
[FFRouterRewrite?addRewriteMatchRule:@"(?:https://)?www.taobao.com/search/(.*)"?targetRule:@"protocol://page/routerDetails?product=$1"];
之后在打開URL:https://www.taobao.com/search/原子彈時(shí),將會(huì) Rewrite 到URL:protocol://page/routerDetails?product=原子彈。
[FFRouter?routeURL:@"https://www.taobao.com/search/原子彈"];
(2)可以通過以下方法同時(shí)增加多個(gè)規(guī)則:
+?(void)addRewriteRules:(NSArray?*)rules;
其中 rules 格式必須為以下格式:
@[@{@"matchRule":@"YourMatchRule1",@"targetRule":@"YourTargetRule1"},
??@{@"matchRule":@"YourMatchRule2",@"targetRule":@"YourTargetRule2"},
??@{@"matchRule":@"YourMatchRule3",@"targetRule":@"YourTargetRule3"},]
(3)Rewrite 規(guī)則中的保留字:
-
通過?
$scheme、$host、$port、$path、$query、$fragment?獲取標(biāo)準(zhǔn) URL 中的相應(yīng)部分。通過$url獲取完整 URL -
通過?
$1、$2、$3...獲取matchRule的正則中使用圓括號(hào)取出的參數(shù) -
$:原變量的值、$$:原變量URL Encode后的值、$#:原變量URL Decode后的值
例如:?https://www.taobao.com/search/原子彈對(duì)于Rewrite 規(guī)則(?:https://)?www.taobao.com/search/(.*)
$1=原子彈 $$1=%e5%8e%9f%e5%ad%90%e5%bc%b9
同樣,https://www.taobao.com/search/%e5%8e%9f%e5%ad%90%e5%bc%b9對(duì)于Rewrite 規(guī)則(?:https://)?www.taobao.com/search/(.*)
$1=%e5%8e%9f%e5%ad%90%e5%bc%b9 $#1=原子彈
2、FFRouterNavigation
考慮到經(jīng)常用路由配置UIViewController之間的跳轉(zhuǎn),所以增加了額外的工具FFRouterNavigation來更方便地控制UIViewController之間的跳轉(zhuǎn)。具體使用方法如下:
/** ?push?時(shí)是否自動(dòng)隱藏底部TabBar ?@param?hide?是否自動(dòng)隱藏,默認(rèn)為?NO ?*/ +?(void)autoHidesBottomBarWhenPushed:(BOOL)hide; /** ?獲取當(dāng)前?ViewController ?@return?當(dāng)前?ViewController ?*/ +?(UIViewController?*)currentViewController; /** ?獲取當(dāng)前?NavigationViewController ?@return?return?當(dāng)前?NavigationViewController ?*/ +?(nullable?UINavigationController?*)currentNavigationViewController; /** ?Push?ViewController ?@param?viewController?被?Push?的?ViewController ?@param?animated?是否使用動(dòng)畫 ?*/ +?(void)pushViewController:(UIViewController?*)viewController?animated:(BOOL)animated; /** ?Push?ViewController,可設(shè)置當(dāng)前?ViewController?是否還保留 ?@param?viewController?被?Push?的?ViewController ?@param?replace?當(dāng)前?ViewController?是否還保留 ?@param?animated?是否使用動(dòng)畫 ?*/ +?(void)pushViewController:(UIViewController?*)viewController?replace:(BOOL)replace?animated:(BOOL)animated; /** ?Push?多個(gè)?ViewController ?@param?viewControllers?ViewController?Array ?@param?animated?是否使用動(dòng)畫 ?*/ +?(void)pushViewControllerArray:(NSArray?*)viewControllers?animated:(BOOL)animated; /** ?present?ViewController ?@param?viewController?被?present?的?ViewController ?@param?animated?是否使用動(dòng)畫 ?@param?completion?回調(diào) ?*/ +?(void)presentViewController:(UIViewController?*)viewController?animated:(BOOL)animated?completion:(void?(^?__nullable)(void))completion; /** ?關(guān)閉當(dāng)前?ViewController,push、present?方式通用 ?@param?animated?是否使用動(dòng)畫 ?*/ +?(void)closeViewControllerAnimated:(BOOL)animated;
感謝
FFRouter實(shí)現(xiàn)方案參考了以下文章,在此表示感謝!
- LABVIEW NPOI庫(kù)文件下載 203次下載
- altium designer元件庫(kù)下載 742次下載
- AD 2D標(biāo)準(zhǔn)封裝庫(kù)下載 22次下載
- 蘋果ios藍(lán)牙調(diào)試助手工具源代碼下載 7次下載
- IRMCK/F171靈活易用的電機(jī)控制芯片 5次下載
- 選擇最簡(jiǎn)單易用的HyperLynx進(jìn)行串?dāng)_仿真資料下載
- 基于信任機(jī)制與Rank閥值的安全RPL路由協(xié)議Sec-RPL 11次下載
- 如何使用OpenWRT路由器實(shí)現(xiàn)網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的設(shè)計(jì) 29次下載
- 兼容iOS 10的一些問題和使用資料整理合集
- AN1246中文手冊(cè)之如何在Microchip圖形庫(kù)中創(chuàng)建控件
- 通用封裝庫(kù)(protel/AD版本通用)資料下載 0次下載
- 在路由器上安裝IOS映像 0次下載
- AD6庫(kù) 5次下載
- 基于BGP協(xié)議屬性的路由策略 11次下載
- 路由控制和路由選擇
- 千兆路由器和百兆路由器的區(qū)別 萬兆路由器有什么好處? 2282次閱讀
- 路由重發(fā)布和路由匯總的概念 1664次閱讀
- 無模式數(shù)據(jù)庫(kù)的利與弊 528次閱讀
- 什么是路由表?IP路由表包含了哪些要素? 1.3w次閱讀
- 1000+常用Python庫(kù)一覽 1147次閱讀
- RabbitMQ中的路由模型(direct) 521次閱讀
- work庫(kù)在VHDL中的特殊用法 1025次閱讀
- Cargo如何訪問世界上最強(qiáng)大的3D庫(kù) 813次閱讀
- 關(guān)于路由策略數(shù)據(jù)庫(kù)(RPDB) 2163次閱讀
- 一文讀懂boost庫(kù)的概念和安裝方式 8016次閱讀
- 內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)全面解析 4248次閱讀
- 思科路由器多少錢_思科路由器優(yōu)勢(shì)有哪些_如何選擇選擇思科路由器 3209次閱讀
- 極路由和普通路由有什么區(qū)別 3062次閱讀
- 極路由怎么設(shè)置_極路由詳細(xì)設(shè)置圖文教程 12.6w次閱讀
- 動(dòng)態(tài)路由特點(diǎn)及構(gòu)成 3364次閱讀
下載排行
本周
- 1PFC電路與BOOST電路設(shè)計(jì)實(shí)例分享
- 1.83 MB | 12次下載 | 4 積分
- 2世平基于靈動(dòng)微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
- 10.93 MB | 11次下載 | 免費(fèi)
- 3電源測(cè)試報(bào)告-基于 國(guó)民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
- 6.47 MB | 11次下載 | 免費(fèi)
- 4PWM控制器的控制方法
- 0.39 MB | 3次下載 | 4 積分
- 5電流檢測(cè)芯片F(xiàn)P135應(yīng)用說明
- 1.24 MB | 3次下載 | 免費(fèi)
- 6全面解讀被動(dòng)式與主動(dòng)式PFC電路
- 1.27 MB | 1次下載 | 4 積分
- 7HC88L051F4低功耗芯片規(guī)格書
- 4.76 MB | 1次下載 | 免費(fèi)
- 8CIU32D655x5數(shù)據(jù)手冊(cè)
- 2.14 MB | 1次下載 | 免費(fèi)
本月
- 1常用電子元器件使用手冊(cè)
- 2.40 MB | 52次下載 | 免費(fèi)
- 2高功率密度碳化硅MOSFET軟開關(guān)三相逆變器損耗分析
- 2.27 MB | 33次下載 | 10 積分
- 3PFC電路與BOOST電路設(shè)計(jì)實(shí)例分享
- 1.83 MB | 12次下載 | 4 積分
- 4世平基于靈動(dòng)微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
- 10.93 MB | 11次下載 | 免費(fèi)
- 5電源測(cè)試報(bào)告-基于 國(guó)民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
- 6.47 MB | 11次下載 | 免費(fèi)
- 6USB拓展塢PCB圖資料
- 0.57 MB | 11次下載 | 免費(fèi)
- 7MS1826 HDMI 多功能視頻處理器數(shù)據(jù)手冊(cè)
- 4.51 MB | 9次下載 | 免費(fèi)
- 8HAL9303線性霍爾效應(yīng)傳感器技術(shù)手冊(cè)
- 0.70 MB | 9次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935134次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191424次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183352次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81600次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73818次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App






創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論